AccessやAccess Runtimeを使わずにmdbファイル、accdbファイルを最適化する

最終更新: 7日前


DAO.DBEngine というライブラリを使うと、AccessやAccessランタイムがインストールされていないPCからでもとても簡単にmdbファイルやaccdbファイルを最適化することができます。

異なる3つの形式で試してみたところ、全てあっけないくらい簡単に最適化ができました。下記はそのテストに使ったソースコードです。

下準備として、まずは最適化したいmdb/accdbファイルを用意し、Excelファイルと同じフォルダに入れて下さい。

ExcelのVBEで標準モジュールを追加し、下記のコードを貼り付けて使って下さい。

ソースコードの青字部分は対象ファイルの名前に変更してください。 

また、CreateObject("DAO.DBEngine.36") の部分は、PCにインストールされているDAO.DBEngineのバージョンに合わせて書き換えて下さい。

ソースコード

Public Sub compactAccess()
 'MDB (Access 97形式)

    Dim DB97old As String:      DB97old = ThisWorkbook.Path & "\" & "DB97.mdb"

    Dim DB97new As String:     DB97new = ThisWorkbook.Path & "\" & "DB97new.mdb"
 
 'MDB (Access 2000形式)

    Dim DB2003old As String:   DB2003old = ThisWorkbook.Path & "\" & "DB2003.mdb"

    Dim DB2003new As String:  DB2003new = ThisWorkbook.Path & "\" & "DB2003new.mdb"
  
 'ACCDB (Access 2007以降)

    Dim DB2007old As String:    DB2007old = ThisWorkbook.Path & "\" & "DB2007.accdb"

    Dim DB2007new As String:  DB2007new = ThisWorkbook.Path & "\" & "DB2003new.accdb"
 
 Dim DBE1 As Object, DBE2 As Object
  'dao360.dll   mdb (Access 97形式含む) にだけ対応

    Set DBE1 = CreateObject("DAO.DBEngine.36")
 
 'acedao.dll     accdb および mdb (Access 97形式除く) に対応

    Set DBE2 = CreateObject("DAO.DBEngine.120")
 
 '最適化

    'MDB (Access 97形式)

    DBE1.CompactDatabase DB97old, DB97new
  'MDB (Access 2000形式)

    DBE1.CompactDatabase DB2003old, DB2003new
  'ACCDB (Access 2007以降)

    DBE2.CompactDatabase DB2007old, DB2007new
 

End Sub

#ExcelVBA #Access #最適化 #mdb #accdb

471回の閲覧