Application.Workbooks
は、VBA(Visual Basic for Applications)で 現在Excelアプリケーションに開かれているすべてのブック(Workbook)を管理するコレクションを表す Application
オブジェクトのプロパティです。
このプロパティを使うことで、開かれている複数のブックにアクセスしたり、操作したりすることができます。
🔷 基本構文
Application.Workbooks
このプロパティ自体は Workbooks
コレクションを返します。個々のブックには、インデックスやブック名を使ってアクセスします。
Application.Workbooks(1)
Application.Workbooks("ブック名.xlsx")
🔷 Workbooks コレクションとは?
Workbooks
は、現在Excelで開かれているすべてのブックを インデックス(1から)またはブック名(文字列) で管理しているコレクションです。
- インデックスの順番は ウィンドウの左から右の順に対応
- 開いていないブックにはアクセスできません
🔷 使用例①:すべての開いているブックを列挙
Sub すべてのブック名を表示()
Dim wb As Workbook
For Each wb In Application.Workbooks
Debug.Print wb.Name
Next wb
End Sub
🔷 使用例②:ブック名でアクセスして保存
Sub ブックを名前で保存()
Application.Workbooks("売上報告.xlsx").Save
End Sub
🔷 使用例③:インデックスでアクセスして閉じる
Sub 最初のブックを閉じる()
Application.Workbooks(1).Close SaveChanges:=False
End Sub
🔷 使用例④:新しいブックを追加して操作
Sub 新規ブック追加()
Dim 新ブック As Workbook
Set 新ブック = Application.Workbooks.Add
新ブック.Sheets(1).Range("A1").Value = "新規作成したブックです"
End Sub
🔷 主なメンバーと操作
メソッド・プロパティ | 説明 |
---|---|
.Add | 新しいブックを作成 |
.Open(filename) | 指定したファイルを開いて Workbooks に追加 |
.Count | 開いているブックの数 |
.Close | ブックを閉じる(保存オプションあり) |
.Item(index) | インデックスまたは名前でブックを取得 |
🔷 注意点
注意点 | 内容 |
---|---|
名前で指定する場合は完全一致 | "売上報告.xlsx" のように拡張子まで含めた正確な名前が必要 |
インデックスは変動する | 開いた順ではなくウィンドウ順なので予測が難しい場合がある |
複数ブックを一度に操作する場合は注意 | 誤って重要なファイルを上書き・閉じる危険があるため確認処理を入れると良い |
🔷 よくある処理パターン
1. 特定の名前のブックが開いているか確認
Function ブックが開いているか(名前 As String) As Boolean
Dim wb As Workbook
For Each wb In Application.Workbooks
If wb.Name = 名前 Then
ブックが開いているか = True
Exit Function
End If
Next
ブックが開いているか = False
End Function
2. ブックを開いて処理し、閉じる
Sub 外部ブック処理()
Dim wb As Workbook
Set wb = Application.Workbooks.Open("C:\データ\外部ファイル.xlsx")
' 処理内容
wb.Sheets(1).Range("A1").Value = "処理済み"
' 保存して閉じる
wb.Close SaveChanges:=True
End Sub
🔷 まとめ
項目 | 内容 |
---|---|
プロパティ名 | Application.Workbooks |
型 | Workbooks コレクション |
目的 | 開かれているすべてのExcelブックを管理・操作 |
アクセス方法 | インデックスまたはブック名 |
主な操作 | 開く、追加、保存、閉じる、列挙など |
注意点 | 名前の一致、ウィンドウ順、誤操作に注意 |
✅ よく使うテンプレート
' 開いているすべてのブックを表示
Dim wb As Workbook
For Each wb In Application.Workbooks
Debug.Print wb.Name
Next
Application.Workbooks
をうまく使いこなすことで、複数ファイルを扱う自動化マクロの構築が非常に効率的になります。ファイル名の検出、保存処理、全ブック一括操作などにも応用できます。