web-dev-qa-db-ja.com

1つのディレクトリから別のディレクトリにファイルをコピーするVBA

だから、私は定期的に別のディレクトリにコピーする必要があるアクセスファイルを持ち、最後のバージョンを置き換えます。これを達成するためにExcelマクロを使用したいと思います。また、プロセスでファイルの名前を変更したいと思います。

例えば。

   fileName = "X:\Database\oldName.accdb"
   copyDestination = "Y:\dbstore\"
   newName = "newName.accdb"

これを行う簡単な方法はありますか?

38
harryg

Scripting.FileSystemObjectで適切なメソッドを使用します。そうすれば、コードはVBScriptとVB.netにより移植可能になります。開始するには、以下を含める必要があります。

Dim fso As Object
Set fso = VBA.CreateObject("Scripting.FileSystemObject")

その後、使用することができます

Call fso.CopyFile(source, destination[, overwrite] )

ここで、ソースと宛先はファイルのフルネーム(パスを含む)です。

http://msdn.Microsoft.com/en-us/library/aa711216(v = vs.71).aspx を参照してください

60
Bathsheba

この方法は、オプションが少ない場合はさらに簡単です。

FileCopy source, destination
69
Jon

このコードを使用するときに大きな頭痛の種になった原因の1つ(他の人に影響を与える可能性があり、誰かがこのようなコメントをここに読みたいと思うようにしたいと思います):

  • 私の目的は、リンクテーブルの更新が必要なダイナミックアクセスダッシュボードを作成することです。
  • 上記のコピー方法を使用して、既存のリンクされたCSVを更新されたバージョンに置き換えます。
  • 上記のコードをモジュールから手動で実行するとうまくいきました。
  • CSVデータにリンクされたフォームから同一のコードを実行すると、ランタイムエラー70(許可が拒否されました)でした。コードの最初のステップは、フォームを閉じることでした(CSVファイルをロック解除して上書きできるようにする必要がありました)。
  • 現在、フォームが閉じられているにもかかわらず、そのフォームに関連付けられたVBAを実行している間、古いCSVファイルをロックしていると考えています。

私の解決策は、データベースで開く別の非表示のフォームからコード(タイマーイベント)を実行することです。

0
Galanor