【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.
シート名や列番号が正しいか確認してください。