-
∨目次
- ブックを取得する
- すべてのブックを取得する
VBA ワークブックを取得する
はじめに
Excel VBA マクロのワークブックを取得する方法を紹介します。
Workbooks プロパティからブックを取得できます。
名前やインデックスや実行中などを指定できます。
- ブックをアクティブにするには「ワークブックをアクティブにする」をご覧ください。
-
目次
- ブックを取得する
- すべてのブックを取得する
ブックを取得する
ブック名で取得
Workbooks の引数に名前を指定すると、そのブックを取得できます。
ブック名「Book1.xlsx」のブックを取得するにはWorkbooks("Book1.xlsx")を入力します。
Dim wb As Workbook
Set wb = Workbooks("Book1.xlsx") ' ブック「Book1.xlsx」を取得
Debug.Print(wb.Name)
' ブック「Book1.xlsx」のシート「sheet1」を取得
Dim ws As Worksheet
Set ws = Workbooks("Book1.xlsx").Worksheets("Sheet1")
Debug.Print(ws.Name)
指定したブックが存在しないときは「エラー 9 インデックスが有効範囲にありません。」が発生します。
インデックスで取得
Workbooks の引数にインデックスを指定すると、そのブックを取得できます。
1 番目のブックを取得するにはWorkbooks(1)を入力します。
Dim wb As Workbook
Set wb = Workbooks(1) ' 1 番目のブックを取得
Set wb = Workbooks(2) ' 2 番目のブックを取得
Debug.Print(wb.Name)
開いた順番にインデックスが増えていきますが、わかりづらいためブック名で取得するのをオススメします。
アクティブなブックを取得
アクティブなブックを取得するにはActiveWorkbookを入力します。
Dim wb As Workbook
Set wb = ActiveWorkbook
Debug.Print(wb.Name)
アクティブなブックとは、手前に表示されているブックです。
マクロを実行しているブックを取得
マクロを実行しているブックを取得するにはThisWorkbookを入力します。
Dim wb As Workbook
Set wb = ThisWorkbook
Debug.Print(wb.Name)
すべてのブックを取得する
Workbooks はコレクションになっているので、これをループしてすべてのブックを取得できます。
' For Each でループする
Dim wb As Workbook
For Each wb In Workbooks
Debug.Print(wb.Name)
Next
' For Next でループする
Dim i As Integer
For i = 1 To Workbooks.Count
Set wb = Workbooks(i)
Debug.Print(wb.Name)
Next
スポンサーリンク