【VBA】特定の名前のシートを開かずに(外部参照で)抽出する方法
日々の業務で大量のデータを扱っていると、特定のシートから必要な情報を素早く取り出すことが求められます。しかし、そのシートを開く手間や時間は避けたいところです。この記事では、VBAを使って特定の名前のシートを開かずに抽出する方法を紹介します。
サンプルコード
VBA
Option Explicit
Sub ExtractDataWithoutOpeningSheet()
Dim wb As Workbook, targetWb As Workbook
Dim ws As Worksheet, targetWs As Worksheet
Dim lastRow As Long, i As Long
Set wb = ThisWorkbook '現在のワークブックを指定
Set targetWb = Workbooks.Open("C:\path\to\targetWorkbook.xlsx") '対象のワークブックを開く
Set ws = wb.Sheets.Add '新しいシートを作成
ws.Name = "ExtractedData" 'シート名を設定
Application.ScreenUpdating = False '画面更新停止
For i = 1 To targetWb.Sheets("TargetSheetName").Cells(targetWb.Sheets("TargetSheetName").Rows.Count, "A").End(xlUp).Row
ws.Cells(i, 1) = targetWb.Sheets("TargetSheetName").Cells(i, 1)
Next i
Application.ScreenUpdating = True '画面更新再開
targetWb.Close SaveChanges:=False '対象のワークブックを閉じる
End Subよくある質問
Q 元に戻せますか?
A.
VBAの実行結果は「元に戻す」が効きません。必ずバックアップを取ってから実行してください。
Q エラーが出たら?
A.
シート名や列番号が正しいか確認してください。