HOME > 即効テクニック > AccessVBA > データベース・データ保護 > 閉じているデータベースを最適化してコピーする(DAO)

即効テクニック

データベース・データ保護

閉じているデータベースを最適化してコピーする(DAO)

(Access)
CompactDatabaseメソッドを使って、閉じているデータベースのコピーと最適化を行います。
サンプルでは、「C:\AccessVBA\db2.mdb」を最適化して、「C:\AccessVBA」フォルダに「db2Back.mdb」というコピーを作成しています。

Sub Sample()
    DBEngine.CompactDatabase "C:\AccessVBA\db2.mdb", "C:\AccessVBA\db2Back.mdb"
End Sub

最適化されるのはコピーされたデータベースです。
開いているデータベースを最適化することはできませんし、コピー先のディレクトリに同名のファイルが存在するとエラーになります。
CompactDatabaseメソッドの構文は次のとおりです。

<構文>
DBEngine.CompactDatabase olddb, newdb, locale, options, password

指定項目 説明 
olddb   閉じている既存のデータベース名を示す値を指定します。
     "C:\db1.mdb" のようにフルパス名で指定できます。
     ファイル名に拡張子が付いている場合、拡張子も指定してください。
     "\\server1\share1\dir1\db1.mdb" という形式でネットワークパス名
     を指定できる場合、ネットワーク上のデータベースも指定することが
     できます。 
newdb   作成中の最適化したデータベースのファイル名(およびパス)
     を示す値を指定します。また、引数olddbと同様、ネットワーク
     パス名も指定することができます。
locale  (省略可能)バリアント型(Variant)の文字列式を指定します。
     この文字列式は、引数newdbを作成するための照合順序を指定します。
     この引数を省略した場合、値は引数 olddb と同じになります。 
     引数newdbパスワードを作成することもできます。次のように、
     引数localeにパスワードの文字列(";pwd=" で始まります)に定数を
     つけて結びつけます。
        DbLangSpanish & ";pwd=NewPassword"
     引数localeにolddb(既定値)と同じ値を使用するのに新しい
     パスワードを指定した場合には、パスワードの文字列を引数locale
     に入れます。
        ";pwd=NewPassword"
options (省略可能)1つ以上のオプションを示す定数または定数の組み合わせ
     を指定します。
password (省略可能)データベースがパスワードで保護されている場合、
     パスワードを含むバリアント型(Variant)の文字列式を指定します。
     パスワードの前に、文字列";pwd="を入力する必要があります。
     引数localeにパスワードの設定を含めた場合、
     この設定は無視されます。 

閉じているデータベースのコピーと最適化以外に、バージョンおよび照合順序の変更、暗号化を行うことができます。これは Jet ワークスペースでのみ使用可です。