最適化するには、DBEngine.CompactDatabaseを使用します。
構文: DBEngine.CompactDatabase 最適化元ファイル名, 最適化先ファイル名
最適化する効果として、ファイルサイズが小さくなります。
ファイルサイズが小さくなるということは、検索などの処理スピードが改善されると思いますが、パソコンの性能向上もあり、それがどの程度かは不明です。
ここでは、Access VBAで最適化を実行し、どれくらいファイルサイズが小さくなったかを検証します。
■ 最適化フォームの作成
下のように、[最適化]ボタンと、最適化ファイルを表示するテキストボックスを配置します。
ボタンのクリックイベントと、ファイル選択ダイアログのコードを入力します。
実行画面です。
■ 最適化のVBA
1)ボタンをクリックすると、ファイル選択ダイアログボックスが開きます。
2)ファイルが選択されると、最適化先ファイルを削除します。
3)DBEngine.CompactDatabas で最適化を実行します。
4)最適化元ファイルを削除します。
5)最適化先ファイルを元ファイルにコピーします。
※ 最適化先ファイルの名前を変更する方法もあります。 ここでは、安全のため一応残すようにしました。
Option Compare Database
Public Function SelectFile_FileDialog() As String
    Dim dlgfolder As FileDialog
    Application.FileDialog(msoFileDialogFilePicker).Title = "ファイルを選択してください"
    
    Application.FileDialog(msoFileDialogFilePicker).InitialFileName = "c:\test\"
    
    Application.FileDialog(msoFileDialogFilePicker).Filters.Clear
    
    Application.FileDialog(msoFileDialogFilePicker).Filters.Add "Access Databese", "*.accdb"
    
    Application.FileDialog(msoFileDialogFilePicker).AllowMultiSelect = False
     
    If Application.FileDialog(msoFileDialogFilePicker).Show = -1 Then
        SelectFile_FileDialog = Application. _
        FileDialog(msoFileDialogFilePicker).SelectedItems(1)
    Else
        SelectFile_FileDialog = ""
    End If
 End Function
Private Sub コマンド0_Click()
    
    Me!テキスト1 = SelectFile_FileDialog
    
    If Me!テキスト1 <> "" Then
        Kill "c:\test\temp.accdb"
        
        DBEngine.CompactDatabase Me!テキスト1, "c:\test\temp.accdb"
    
        Kill Me!テキスト1
        FileCopy "c:\test\temp.accdb", Me!テキスト1
    End If
    
End Sub
■ 最適化の効果
最適化前のファイルサイズが、1,183,744Byteです。
最適化後のファイルサイズが、1,134,592Byteです。
結果、49,152Byte小さくなりました。