ワークブックの一覧は、Workbooksコレクションオブジェクトから取得します。
複数のワークブックを開いた状態で、下記のマクロを動かしてみて下さい。
'***************************************************************************************************
' 開いているブックの一覧取得サンプル Module1(Module)
'
' 作成者:井上治 URL:https://www.ne.jp/asahi/excel/inoue/ [Excelでお仕事!]
'***************************************************************************************************
Option Explicit
'***************************************************************************************************
'* 処理名 :TEST2
'* 機能 :開いているブックの一覧取得
'---------------------------------------------------------------------------------------------------
'* 返り値 :(なし)
'* 引数 :(なし)
'---------------------------------------------------------------------------------------------------
'* 機能説明:
'* 注意事項:
'***************************************************************************************************
Sub TEST2()
Dim objWbk As Workbook ' 各ブック
Dim objSh As Worksheet ' 各シート
Dim objShOwn As Worksheet ' 本ブックのシート
Dim strOwnBook As String ' 自ブック名
Dim lngRow As Long ' 行
Dim lngCol As Long ' カラム
Set objWbk = ThisWorkbook
strOwnBook = objWbk.Name
Set objShOwn = objWbk.Worksheets(1)
' 1つのブックしか開いていない
If Workbooks.Count <= 1 Then
MsgBox "2つ以上のブックを開いてから起動させて下さい。", vbExclamation
Exit Sub
End If
objShOwn.Cells(1, 1).Value = "ブック名"
objShOwn.Cells(1, 2).Value = "シート名→"
lngRow = 1
' 開いているブックの一覧を取得
For Each objWbk In Workbooks
' 自ブック以外を対象とする
If objWbk.Name <> strOwnBook Then
' ブック名のセット
lngRow = lngRow + 1
objShOwn.Cells(lngRow, 1).Value = objWbk.Name
' シートの一覧を取得
lngCol = 1
For Each objSh In objWbk.Worksheets
' シート名のセット
lngCol = lngCol + 1
objShOwn.Cells(lngRow, lngCol).Value = objSh.Name
Next objSh
End If
Next objWbk
' 自ブックをアクティブに
ThisWorkbook.Activate
End Sub
'----------------------------------------<< End of Source >>----------------------------------------