【VBA】開いている全ブックをバックグラウンドで取得する方法
日々の業務で大量のExcelファイルを開きながら作業をする場合、それぞれのファイル名やパスを手動で管理するのは大変です。この記事では、開いている全てのワークブックを一括でバックグラウンドで取得し、効率的に管理する方法を紹介します。
サンプルコード
VBA
Option Explicit
Sub GetOpenWorkbooks()
Dim wb As Workbook, wbArray() As String
ReDim wbArray(1 To Application.Workbooks.Count)
' バックグラウンド処理の開始
Application.ScreenUpdating = False
For Each wb In Workbooks
If Not wb.Name Like "PERSONAL.xlsb" Then
wbArray(Application.Index(wbArray, 0) + 1) = wb.Name & vbTab & wb.Path
End If
Next wb
' 結果の表示
MsgBox Join(wbArray, vbCrLf), vbInformation, "開いているワークブック"
' バックグラウンド処理の終了
Application.ScreenUpdating = True
End Subよくある質問
Q 元に戻せますか?
A.
VBAの実行結果は「元に戻す」が効きません。必ずバックアップを取ってから実行してください。
Q エラーが出たら?
A.
ワークブック名やパスに誤りがないか確認してください。また、PERSONAL.xlsb以外の全ての開いているワークブックが対象となります。