【VBA言語】ファイルをコピーする(FileCopy)方法【初心者向け解説】

【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中にエラーが発生した場合、エラーメッセージが表示されるように エラーハンドリングをしています。これにより、予期しないエラーが発生した際に、コードが中断することなく どこで問題が発生したのかをユーザーに通知できます。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です