📘 Excel逆引き事典

【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以外の全ての開いているワークブックが対象となります。