【VBA】開いている全ブックを開かずに(外部参照で)転記する方法
毎回開くのが面倒な大量のExcelブックからデータを抽出してまとめたい!そんな悩みを解決する方法を紹介します。この記事では、他のExcelファイルに保存されているデータを参照し、現在開いているワークブックへ転記するVBAマクロを作成します。
サンプルコード
VBA
Option Explicit
Sub TransferDataFromOtherBooks()
Dim wb As Workbook, ws As Worksheet
Dim sourceWb As Workbook, sourceWs As Worksheet
Dim lastRow As Long, i As Long
Application.ScreenUpdating = False '画面更新を停止する
Set ws = ThisWorkbook.Sheets("Sheet1") '転記先のワークシート
For Each wb In Workbooks '開いている全ブックに対してループ
If wb.Name <> ThisWorkbook.Name Then '現在のワークブック以外の場合
Set sourceWb = Workbooks(wb.Name) '参照するワークブックを設定
Set sourceWs = sourceWb.Sheets("Sheet1") '参照するワークシートを設定
lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row + 1 '転記先の最終行を取得
For i = 1 To sourceWs.UsedRange.Rows.Count '元データの行数分ループ
ws.Cells(lastRow + i - 1, 1) = sourceWs.Cells(i, 1).Value 'A列の値を転記
ws.Cells(lastRow + i - 1, 2) = sourceWs.Cells(i, 2).Value 'B列の値を転記
Next i
End If
Next wb
Application.ScreenUpdating = True '画面更新を再開する
End Subよくある質問
Q 元に戻せますか?
A.
VBAの実行結果は「元に戻す」が効きません。必ずバックアップを取ってから実行してください。
Q エラーが出たら?
A.
シート名や列番号が正しいか確認してください。