VBA ファイルオブジェクト利用 コピーと移動

ファイルのコピー(CopyFile)

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

fso.CopyFile "C:\MyTest\sample.txt", "C:\MyTest\Backup\sample.txt"
  • コピー元は そのまま残る
  • 上書き可:第3引数 True を指定すれば上書き可能
  • コピー先のフォルダが存在しないと エラー

ファイルの移動(MoveFile)

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

fso.MoveFile "C:\MyTest\sample.txt", "C:\MyTest\Backup\sample.txt"
  • コピー元は 削除される(移動)
  • 上書き不可:コピー先にファイルがあると エラー
  • ファイルが開かれていると移動失敗

フォルダのコピー(CopyFolder)

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

fso.CopyFolder "C:\MyTest\Data", "C:\MyTest\Backup\Data"
  • サブフォルダ・ファイル含めて 再帰的にコピー
  • 上書き可能(既存フォルダがある場合、中身がマージされる)

フォルダの移動(MoveFolder)

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

fso.MoveFolder "C:\MyTest\Data", "C:\MyTest\Backup\Data"
  • 元フォルダは 削除される(完全移動)
  • 先に同名フォルダがあると エラー

まとめ

操作元データ上書きフォルダごと備考
CopyFile残るファイル単体対象
MoveFile消える不可ファイル開かれていると失敗
CopyFolder残る存在するフォルダには中身だけコピー
MoveFolder消える不可同名フォルダがあるとエラー

コメント