【VBA言語】ファイルをコピーする(FileCopy)方法【初心者向け解説】
FileCopyとは?
VBAにおける「FileCopy」関数は、指定したファイルをコピーするために使用されるシンプルな関数です。 この関数は、ある場所に存在するファイルを別の場所に複製する際に非常に便利です。例えば、バックアップや データの移動など、日常的にファイルをコピーするタスクで使用されます。
「FileCopy」関数は、単にソースファイルとコピー先のファイルのパスを指定するだけで、他の設定を 何も必要としません。非常に簡単に実行できるため、初心者にも扱いやすいです。
FileCopyの構文
「FileCopy」の構文は以下の通りです:
FileCopy Source, Destination
ここで、「Source」はコピー元のファイルのパスを指定し、「Destination」はコピー先のファイルのパスを指定します。
例えば、ファイル「C:\Documents\file1.txt」を「D:\Backup\file1.txt」にコピーする場合、以下のようなコードになります:
FileCopy "C:\Documents\file1.txt", "D:\Backup\file1.txt"
FileCopyを使った基本的な例
それでは、具体的なコード例をいくつか見てみましょう。以下の例では、指定したフォルダにあるファイルを もう一つのフォルダにコピーする簡単なコードです。
Sub CopyFileExample()
' コピー元とコピー先のパスを指定
Dim sourcePath As String
Dim destPath As String
sourcePath = "C:\Documents\file1.txt"
destPath = "D:\Backup\file1.txt"
' FileCopy関数でファイルをコピー
FileCopy sourcePath, destPath
End Sub
上記のコードを実行すると、指定した場所にある「file1.txt」がコピーされます。 もしコピー先に同名のファイルがすでに存在している場合、このコードはエラーを出します(後述するエラーハンドリングで対応可能です)。
FileCopyを使った応用例
もっと複雑な使い方もあります。例えば、あるディレクトリ内のすべてのファイルを 別のディレクトリにコピーする場合です。これには「Dir」関数を使ってフォルダ内のファイルを 1つずつ取得し、コピーすることができます。
Sub CopyAllFiles()
Dim sourceFolder As String
Dim destFolder As String
Dim fileName As String
sourceFolder = "C:\Documents\"
destFolder = "D:\Backup\"
' ソースフォルダ内のすべてのファイルをループ
fileName = Dir(sourceFolder & "*.*")
Do While fileName <> ""
' 各ファイルをコピー
FileCopy sourceFolder & fileName, destFolder & fileName
fileName = Dir
Loop
End Sub
このコードは、ソースフォルダ内にあるすべてのファイルを指定したバックアップ先にコピーします。 ファイルが多くても、1つずつ処理してくれるので便利です。
エラーハンドリング
FileCopyを使っていると、様々なエラーが発生する可能性があります。例えば、コピー先に同名のファイルが すでに存在している場合や、アクセス権限がない場合などです。そのため、エラーハンドリングを行うことで より堅牢なコードにすることができます。
Sub SafeCopyFile()
On Error GoTo ErrorHandler
Dim sourcePath As String
Dim destPath As String
sourcePath = "C:\Documents\file1.txt"
destPath = "D:\Backup\file1.txt"
' ファイルをコピー
FileCopy sourcePath, destPath
Exit Sub
ErrorHandler:
MsgBox "エラーが発生しました: " & Err.Description
End Sub
上記のコードでは、もしFileCopy中にエラーが発生した場合、エラーメッセージが表示されるように エラーハンドリングをしています。これにより、予期しないエラーが発生した際に、コードが中断することなく どこで問題が発生したのかをユーザーに通知できます。