#678 | リンク先DBファイルにFileCopyが使えないときの対処法 | VBA | |
フロントエンドとバックエンドの2つのデータベースファイルを使っている状態で、フロントエンド側のプログラム操作で、バックエンドとしてリンクしているデータベースファイルを丸ごとコピーしてバックアップしたい場合があります。 そのような場合、「FileCopy」ステートメントを使って簡単に任意のファイルへコピーすることができます。 例:「DataDB.accdb」を「Backup\DataDB_BAK.accdb」にコピーする場合 FileCopy "d:\DataDB.accdb", "d:\Backup\DataDB_BAK.accdb" しかし、リンクテーブルのデータを画面に表示させたりしていない(テーブルを開いていない)状態であればよいのですが、そうでない状態(自分のパソコンで開いていなくても他のパソコンでいずれかのテーブルを使っているような場合も含む)では、リンク先のデータベースファイルがロックされた状態になっており、「FileCopy」では『書き込みできません』エラーとなってコピーすることができません。 一方、そのような状況であっても、エクスプローラーでファイルをコピー&ペーストすることはできます。そのことから、VBAの「FileCopy」ではダメでも外側からファイルシステムとして操作するのであれば可能であることが分かります。 そこで、下記のように「FileSystemObject」オブジェクトの「CopyFile」メソッドを使うことで、上記問題を回避することができます。 Dim fso As Object Set fso = CreateObject("Scripting.FileSystemObject") fso.CopyFile "d:\DataDB.accdb", "d:\Backup\DataDB_BAK.accdb" Set fso = Nothing |
|||
|
Copyright © T'sWare All rights reserved |