エクセルVBAでファイルをコピーする!

エクセルで、ファイルをコピーすることは良くあることです。ここでは、エクセルVBAで、ファイルをコピーする方法を紹介しています。ファイルをコピーしたい場合は、FileCopy ステートメントで簡単にコピーできます。例えば、AフォルダにあるBファイルを、nフォルダにコピーしたい場合、FileCopy ステートメントを実行すると、nフォルダにBファイルが一瞬で作成されます。ファイル名を変更してコピーすることもできます。FileCopy ステートメントの構文は、コピー元と、コピー先のファイルのパスを指定するだけです。エクセルVBAの中でも、ファイルのコピーは基本となる操作です。単純にファイルをコピーしたい場合は、構文通りに作成しましょう。

 

 

FileCopy ステートメント

ファイルをコピーするには、FileCopy ステートメントを使います。

FileCopy ステートメントの構文

FileCopy source, destination

 source はコピー元のファイルの場所、 destination はコピー先のファイルの場所を指定します。

 destinationで指定したファイル名と、同じファイル名がコピー先のフォルダにあった場合は、上書きになります。

 

 

指定した場所にファイルをコピーする

エクセルVBAで、ファイルをコピーしてみましょう。

ファイル名「契約一覧表.xls」を、コピーするコードです。

「D:\2017年度」フォルダにある「契約一覧表.xls」ファイルを、「D:\2018年度」フォルダにコピーします。

Sub ファイルのコピー()
FileCopy “D:\2017年度\契約一覧表.xls”, “D:\2018年度\契約一覧表.xls”
End Sub

「D:\2018年度」フォルダに、「契約一覧表.xls」ファイルがコピーされました!

名前を変更してファイルをコピーする

ファイルをコピーする時、ファイルの名前を変更してコピーすることができます。

ファイル名「登録者数.xls」を、「契約者数.xls」のファイル名でコピーするコードです。

「D:\登録」フォルダにある「登録者数.xls」ファイルを、「D:\契約」フォルダに、「契約者数.xls」のファイル名でコピーします。

Sub 名前を変更してファイルをコピー()
FileCopy “D:\登録\登録者数.xls”, “D:\契約\契約者数.xls”
End Sub

「D:\登録」フォルダに、「契約者数.xls」のファイルがコピーされました!

 

 

FileCopy でエラーになる場合

FileCopy ステートメントを実行すると、エラーになる場合があります。

どのうな場合にエラーになるのでしょうか?

① コピー元のファイルが存在しない。

② 指定したフォルダが存在しない。

③ コピー元のファイルが開いている。

FileCopy ステートメントを使用する場合、フォルダに同じファイル名があると上書きされるので、Dir関数を使用して確認しましょう。

失敗しないファイルのコピー

エクセルVBAで、単純にファイルをコピーする方法を紹介しましたが、FileCopy ステートメントを実行すると、エラーになる場合があります。当然ですが、コピーするファイルが存在しなかったり、指定したフォルダが存在しなかったときです。コピー元のファイルを開いている時も、エラーになってしまうので気を付けましょう。もちろん、指定したファイルのパスが間違っている場合は,エラーになってしまいます。パスはよく確認して入力しましょう。指定したフォルダに同じファイルが存在する場合には、上書きされてしまします。上書き保存を防ぐには、ファイルをコピーする前に同じファイル名がないか所在を確認する必要があります。

こちらの記事もご覧ください。⇒エクセルVBAで複数のファイルをコピーする!