Microsoft Access Club >Access裏技Tips >このページ >次頁 < 前項 サイト内検索


次々とAccessファイルを最適化する : Access裏技Tips



Accessファイルに備わっている最適化処理は、開いているファイルだけを対象にします。 ここでは、同じフォルダーにある他のAccessファイルを対象にした最適化処理の技を紹介します。

Accessファイルを最適化

  1. プロシージャの実行は、フォーム上のコマンドボタンから行います。
  2. メンテナンスフォーム(frm_sample)を作成し、コマンドボタンを配置(Cmdコマンド)します。
  3. コマンドボタンのクリック時イベントを利用して、Functionプロシージャ Saitekika を実行します。
  4. ユーザーの作業は、最適化処理を行うAccessファイル名の入力だけです。

Public Sub プロシージャ の作成

  1. Subプロシージャ Saitekika を作成します。
  2. 対象となるのは、Accessのmdbファイルです。
  3. また、最適化するファイルは、実行するAccessファイルと同じフォルダーに存在することを前提にしています。
Sub Saitekika ()

On Error GoTo エラー

    Dim strPass As String
    Dim strTxt As String
    Dim varFileName As Variant
    Dim strdir As String
    Dim strName As String
    Dim strMsg1 As String
    Dim strMsg2 As String
    
    strMsg1 = "同じフォルダーにあるAccessファイル名" & _
              "(拡張子は不要)を入力して下さい。"
              
    varFileName = InputBox(strMsg1, "最適化対象ファイル名入力") ' --- A
    
    If varFileName = "" Then ' --- B
        MsgBox "ファイル名を入力してください。", 16
        End
    End If
    
    strPass = CurrentDb.Name ' --- C
    strTxt = InStrRev(strPass, "\") ' --- D
    strdir = Left(strPass, strTxt) ' --- E
    strName = strdir & varFileName & ".mdb" ' --- F
    
    strMsg2 = "最適化対象のファイル名は " & varFileName & ".mdb です。" & _
             Chr(13) & "ファイルの所在場所は" & strdir & "です。" & _
             Chr(13) & "最適化を行いますか?"

    If MsgBox(strMsg2, 17) = 1 Then
        DBEngine.CompactDatabase strName, strdir & varFileName & _
                                                "ファイル最適化中.mdb" ' --- G
        Kill strName 'varFileNameファイルを削除します。 ' --- H
        
        Name strdir & varFileName & "ファイル最適化中.mdb" As strName ' --- I
        MsgBox "最適化が完了いたしました。"
    End If

    Exit Sub

エラー:

    MsgBox strName & "を最適化することができませんでした。" & Chr(13) & _
            "エラー番号は" & Err.Number & "です。" & Chr(13) & _
            "理由 : " & Err.Description, 16
    End

End Sub
解説
  1. 変数varFileNameにInputBoxステートメントの値を代入します。
  2. InputBoxステートメントで、[キャンセル]ボタン、または、空白のまま[OK]ボタンが押された時の処理です。
  3. CurrentDbメソッドは、Accessウィンドウで現在開かれているデータベースのオブジェクト変数を返します。CurrentDb.Nameと記述すると、Accessファイルのパスとファイル名を求めることができます。
  4. InStrRev関数は、ある文字列の中から指定された文字列を最後の文字位置から検索を開始し、最初に見つかった文字位置(先頭からその位置までの文字数)を返す文字列処理関数です。InStrRev("あいうえおあいうえお","え")は、9の値を返します。Access2000バージョンから実装されました。
  5. Left関数は、文字列の左端から指定した文字数分の文字列します。
  6. 変数strNameに、最適化先ファイルのパス(ファイル名を含む)を代入します。
  7. BEngine.CompactDatabaseは、閉じているデータベースのコピーと最適化を行います。ファイル最適化中という名の最適化した新ファイルを作成します。
  8. Killステートメントは、ディスクからファイルを削除するAccessの組み込み機能です。
  9. Nameステートメントを使って、ファイル最適化中という名のファイルを元の名前に戻します。
今回のおすすめポイント

最適化処理

Accessファイルの最適化処理は、例えば、AというファイルがBというファイル名で最適化処理が行われ、次にAのファイルが削除されます。最後に、Bのファイル名をAのファイル名に戻します。これが一連の流れです。よつて、対象となるAccessファイルが閉じている必要があります。開いているとエラーが発生します。

メンテナンスフォームの作成

  1. 非連結のメンテナンスフォームを作成し、コマンドボタンを配置します。

コマンドボタンクリック時イベントプロシージャの作成

コマンドボタンクリック時イベントプロシージャを作成します。

Private Sub Cmdコマンド_Click()

    Call Saitekika ' --- A

End Sub
解説
  1. SubプロシージャSaitekikaを呼び出します。

動作確認

  1. デザインビューからフォームビューに切り替え、コマンドボタンをクリックします。

  1. InputBoxダイアログに、最適化を行うAccessファイル名を入力し、[OK]をクリックします。

  1. 確認のメッセージが開きますので、[OK]をクリックします。

  1. 完了のメッセージが開きます。

関連ページ

ページの先頭へ 前ページへ戻る

 


次々とAccessファイルを最適化する : Access裏技Tips


 

-Microsoft Access Club-

cPanel あるいは PLESKコントロールパネルをインストールした専用レンタルサーバのディスカウントプランを期間限定で公開しています。
cPanel・PLESKコントロールパネルを備えた専用レンタルサーバ....。