#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

| Index | Prev | Next |

この情報は参考になりましたか?、問題は解決しましたか?、もしまだなら......
T'sWareのワンポイトテクニカルアドバイスをご利用ください。3000円/件〜でご支援します。
スタンドアロンからSQL Server対応まで、オーダーメイドのシステムを短納期・安価でお届けします


Copyright © T'sWare All rights reserved