HOME > 即効テクニック > Excel VBA > ファイル操作関連のテクニック > ファイルをコピーする(FileCopyステートメント)

ファイルをコピーする(FileCopyステートメント)|Excel VBA

ファイル操作関連のテクニック

ファイルをコピーする(FileCopyステートメント)

(Excel 97/2000/2002/2003/2007/2010/2013/2016)

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

▼FileCopyステートメントの構文
FileCopy コピー元, コピー先

次のコードは「C:\Tmp\Test.txt」を「C:\Work」フォルダにコピーします。

Sub Sample1()
  FileCopy "C:\Tmp\Test.txt", "C:\Work\Test.txt"
End Sub

「コピー先」にはフォルダ名ではなく、ファイル名を指定する点に留意してください。
次のようにするとエラーになります。

 FileCopy "C:\Tmp\Test.txt", "C:\Work\"

■テンプレートをもとにファイルを複製する

「コピー先」にはファイル名を指定するので、同じフォルダ内に別名でファイルの複製を作ることができます。
次のコードは「売上テンプレート.xls」の複製を同じフォルダに12個作ります。
Sub Sample2()
    Dim i As Long
    For i = 1 To 12
        FileCopy "C:\Work\売上テンプレート.xls", "C:\Work\売上_" & i & "月.xls"
    Next i
End Sub

■上書きコピーを確認する

FileCopyステートメントは「コピー先」に、同名のファイルが存在していると、そのファイルを上書きします。このとき確認メッセージは表示されません。
うっかり上書きするのを防ぐには、Dir関数を使用して次のように確認するといいでしょう。

Sub Sample3()
    Dim ret As Long
    
    If Dir("C:\Work\Test.txt") <> "" Then
        ret = MsgBox("同名のファイルが存在します。" & vbCrLf & _
                  "上書きしますか?", vbYesNo)
        If ret = vbNo Then Exit Sub
    End If
    FileCopy "C:\Tmp\Test.txt", "C:\Work\Test.txt"
End Sub