Accessを最適化@Excel マクロ・VBA

VBAでAccessを最適化します。

Microsoft Jet and Replication objectsを参照設定します。
CreateObjectを利用する場合は、必要ありません。

JRO.JetEngineを生成します。
接続文字列を設定します。

CompactDatabaseにて、Accessを最適化します。
最適化するDBの接続文字列と、最適化後のDBの接続文字列を引数に設定します。

最適化したら、最適化前のDBを削除し、
最適化したDBのファイル名を、元のDBのファイル名に変更します。



Sub test()

Dim jetEn As JRO.JetEngine
Dim dbPath As String

'JRO.JetEngineを生成
Set jetEn = New JRO.JetEngine

'DBのファイルパス
dbPath = "C:\DB.mdb"

'最適化後のDBファイル名が既に存在していたら、削除する。
If Len(Dir(dbPath & ".tmp")) > 0 Then
    Kill dbPath & ".tmp"
End If

'接続文字列の設定
connectionString = "provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & dbPath

'最適化(DBファイルに、".tmp"を付与したファイル名で、最適化したDBを作成)
jetEn.CompactDatabase connectionString, connectionString & ".tmp"

'最適化前のDBを削除
Kill dbPath

'ファイル名変更(最適化したDBを元のファイル名にする)
Name dbPath & ".tmp" As dbPath


Set jetEn = Nothing

End Sub




Copyright (C) Excelマクロ・VBAのお勉強. All Rights Reserved.