📘 Excel逆引き事典

【VBA】特定のフォルダ内の全ファイルを完全一致で転記する方法

日々の業務では大量のデータを扱うことが多く、その中から特定のファイルだけを抽出して転記することは手間がかかります。この記事では、VBAを使って効率的に特定のフォルダ内の全ファイルを完全一致で転記する方法を紹介します。

サンプルコード

VBA
Option Explicit
Sub 転記処理()
    Dim fso As Object, folder As Object, file As Object
    Dim wbSource As Workbook, wsSource As Worksheet
    Dim wbTarget As Workbook, wsTarget As Worksheet
    Dim sourceFileName As String, targetSheetName As String
    Dim lastRow As Long
    
    ' ソースワークブックとターゲットワークブックを指定
    Set wbSource = Workbooks.Open("C:\\source\\特定のファイル名.xlsx")
    Set wsSource = wbSource.Sheets(1)
    Set wbTarget = ThisWorkbook
    Set wsTarget = wbTarget.Sheets("転記先シート")
    
    ' フォルダ内の全ファイルを取得
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set folder = fso.GetFolder("C:\\source\\")
    
    Application.ScreenUpdating = False
    For Each file In folder.Files
        If file.Name = "特定のファイル名.xlsx" Then ' 完全一致で指定
            sourceFileName = file.Path
            wbSource.Close SaveChanges:=False
            Set wbSource = Workbooks.Open(sourceFileName)
            
            With wsTarget
                .Cells(.Rows.Count, 1).End(xlUp).Offset(1, 0).Resize(wsSource.UsedRange.Rows.Count, wsSource.UsedRange.Columns.Count) = wsSource.UsedRange.Value
            End With
            wbSource.Close SaveChanges:=False
        End If
    Next file
    
    Application.ScreenUpdating = True
End Sub

よくある質問

Q 元に戻せますか?

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

Q エラーが出たら?

A.
シート名や列番号が正しいか確認してください。