📘 Excel逆引き事典

【VBA】特定のフォルダ内の全ファイルをエラー処理付きでコピーする方法

日々の業務で大量のファイルを手動で移動するのは大変です。この記事では、特定のフォルダ内の全ファイルを一括でコピーし、エラーが発生した場合でも安全に処理できるVBAマクロを作成します。

サンプルコード

VBA
Option Explicit
Sub CopyFilesWithErrorHandling()
    Dim sourceFolder As String, destinationFolder As String
    Dim fileSystemObject As Object
    Set fileSystemObject = CreateObject("Scripting.FileSystemObject")
    
    ' ソースフォルダとデスティネーションフォルダを指定
    sourceFolder = "C:\SourceFolder"
    destinationFolder = "D:\DestinationFolder"
    
    If Not fileSystemObject.FolderExists(sourceFolder) Then
        MsgBox "ソースフォルダが存在しません。", vbExclamation
        Exit Sub
    End If
    
    ' デスティネーションフォルダの作成
    If Not fileSystemObject.FolderExists(destinationFolder) Then
        fileSystemObject.CreateFolder destinationFolder
    End If
    
    On Error GoTo ErrorHandler
    Application.ScreenUpdating = False
    Dim sourceFile As Object, files As Object
    Set files = fileSystemObject.GetFolder(sourceFolder).Files
    For Each sourceFile In files
        ' ファイルをコピーする
        fileSystemObject.CopyFile sourceFile.Path, destinationFolder & "\"
    Next sourceFile
    
    Application.ScreenUpdating = True
    MsgBox "ファイルのコピーが完了しました。", vbInformation
    Exit Sub
ErrorHandler:
    MsgBox Err.Description, vbCritical
End Sub

よくある質問

Q 元に戻せますか?

A.
VBAの実行結果は「元に戻す」が効きません。必ずバックアップを取ってから実行してください。

Q エラーが出たら?

A.
ソースフォルダやデスティネーションフォルダのパスが正しいか、ファイル名に問題がないか確認してください。