← コード一覧へ戻る
実務ファイル

ファイルをコピーする

1つのファイルを別の名前・場所へコピーします。同名のコピー先がある場合は中止し、上書きしません。

実行前に確認

  • Windows専用の例です。C:\Dataは例なので、自分で用意した練習用フォルダーの絶対パスに変更してください。
  • 同名ファイルは上書きしません。ワイルドカード(*や?)を指定せず、1ファイルずつ使ってください。

1サンプルコード

Sub Example4003()
    On Error GoTo Failed
    Dim fso As Object
    Set fso = CreateObject("Scripting.FileSystemObject")
    Dim sourcePath As String, destinationPath As String
    sourcePath = "C:\Data\sample.xlsx"
    destinationPath = "C:\Backup\sample.xlsx"
    If Not fso.FileExists(sourcePath) Then Err.Raise 53, , "コピー元がありません"
    If Not fso.FolderExists(fso.GetParentFolderName(destinationPath)) Then Err.Raise 76, , "コピー先フォルダーがありません"
    If fso.FileExists(destinationPath) Or fso.FolderExists(destinationPath) Then
        MsgBox "コピー先が既にあるため中止します"
        Exit Sub
    End If
    fso.CopyFile sourcePath, destinationPath, False
    MsgBox "コピー先: " & destinationPath
    Exit Sub
Failed:
    MsgBox "処理を中止しました: " & Err.Description
End Sub

図で見るファイルの変化

イメージ図

コードに沿った概念図です。実際の画面や実行結果ではありません。

  1. コピー前

    C:\Data\sample.xlsx:あり C:\Backup:親フォルダーあり C:\Backup\sample.xlsx:なし

  2. マクロ:安全確認

    コピー元と親フォルダーを確認。コピー先に同名ファイル・フォルダーがないか確認

  3. マクロ:コピー

    CopyFileで1ファイルをコピー。上書きはFalse

  4. コピー後

    C:\Data\sample.xlsx:残る C:\Backup\sample.xlsx:新しく作成

コピー先が既にあれば中止。コピー元・親フォルダーなしやアクセスエラーでも中止します。*や?は使いません。

コードの処理を説明する模式図です。実際の画面や実行結果を撮影したものではありません。

使い方・実行手順を確認する5つの手順で、コードの使い方を確認できます
  1. 1

    Windows版のデスクトップExcelで練習用ブックを.xlsm形式で保存します。Alt+F11→[挿入]→[標準モジュール]に、この例だけを貼り付けます。

  2. 2

    練習用sample.xlsxを閉じ、C:\Backupなどコピー先の親フォルダーを用意します。

  3. 3

    sourcePathをコピー元、destinationPathをコピー先のファイル名まで含むパスへ変更します。

  4. 4

    実行するSubの内側にカーソルを置き、F5キーを押します。

  5. 5

    元ファイルを残したままコピー先へ1ファイルが作成されます。同名のコピー先が既にある場合は中止します。

使っている機能の公式ドキュメント(Microsoft Learn)