📘 Excel逆引き事典

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

日々の業務では、大量のデータを手作業で移動させることは非常に効率が悪いだけでなく、ミスや疲労につながります。この記事では、特定のフォルダ内のすべてのファイルを一括でエラー処理付きで転記するVBAマクロを作成し、業務効率化に役立てましょう。

サンプルコード

VBA
Option Explicit
Sub TransferFiles()
    Dim fso As Object, folder As Object, file As Object
    Dim wb As Workbook
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sheets("Sheet1")
    
    ' フォルダパスを指定
    Const FolderPath As String = "C:\Users\YourName\Documents\Folder"
    
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set folder = fso.GetFolder(FolderPath)
    
    ' フォルダ内の全ファイルを取得
    For Each file In folder.Files
        If LCase(Right(file, 4)) = ".xls" Or LCase(Right(file, 5)) = ".xlsx" Then
            Set wb = Workbooks.Open(file)
            On Error Resume Next ' エラー処理を開始
            ws.Cells(ws.Rows.Count, "A").End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlPasteValues
            wb.Close SaveChanges:=False
            On Error GoTo 0 ' エラー処理終了
        End If
    Next file
    
    Application.ScreenUpdating = True
    Application.DisplayAlerts = True
End Sub

よくある質問

Q 元に戻せますか?

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

Q エラーが出たら?

A.
シート名や列番号が正しいか、ファイル形式が対応しているか確認してください。