【VBA】全てのシートを開かずに(外部参照で)取得する方法
日々の業務で大量のデータを扱う際、全てのシートを開くのは時間がかかるだけでなく、労力も必要です。この記事では、VBAを使って全シートの情報を非開状態で取得し、業務効率化に役立てる方法を紹介します。
サンプルコード
VBA
Option Explicit
Sub GetSheetDataWithoutOpening()
Dim wb As Workbook
Set wb = ThisWorkbook 'または具体的なワークブック名を指定する
Dim ws As Worksheet, targetWs As Worksheet
Set targetWs = wb.Sheets("TargetSheet") '取得したデータを保存するシート
Application.ScreenUpdating = False '画面更新停止
For Each ws In wb.Worksheets
If ws.Name <> targetWs.Name Then '対象のワークシートはスキップ
Dim lastRow As Long
lastRow = GetLastRow(ws) '各シートの最終行を取得
Dim i As Long
For i = 1 To lastRow
'データ取得処理(例:ws.Cells(i, 1).Value)
targetWs.Cells(targetWs.Rows.Count, "A").End(xlUp).Offset(1, 0).Value = ws.Cells(i, 1).Value '取得したデータをターゲットシートに保存
Next i
End If
Next ws
Application.ScreenUpdating = True '画面更新再開
End Sub
Function GetLastRow(ws As Worksheet) As Long
Dim lastCell As Range
Set lastCell = ws.Cells(ws.Rows.Count, 1).End(xlUp)
GetLastRow = lastCell.Row
End Functionよくある質問
Q 元に戻せますか?
A.
VBAの実行結果は「元に戻す」が効きません。必ずバックアップを取ってから実行してください。
Q エラーが出たら?
A.
シート名や列番号が正しいか確認してください。