wrote :: 2001.12.05

トップページ > Excel > VBA > 講座:ファイルの操作 > ブックの一覧を取得する


ブックの一覧を取得する

なんか話が長くなってきました……悪いクセです。ここは簡潔にいきましょう。現在開いているブックの一覧を取得するには、Workbooks コレクションのメンバーを調べます。Workbooks コレクションの Count プロパティは、コレクション内に存在する Workbook オブジェクトの数を返します。

Sub Sample13()
    Dim i As Long, tmp As String
    For i = 1 To Workbooks.Count
        tmp = tmp & Workbooks(i).Name & vbCrLf
    Next i
    MsgBox "現在開いているブックは、" & vbCrLf & tmp & "です。", vbInformation
End Sub

あるいは、For Each ステートメントを使って次のようにも書けます。得られる結果は同じです。

Sub Sample14()
    Dim wb As Workbook, tmp As String
    For Each wb In Workbooks
        tmp = tmp & wb.Name & vbCrLf
    Next wb
    MsgBox "現在開いているブックは、" & vbCrLf & tmp & "です。", vbInformation
End Sub


■任意のブックが開いているかどうかを調べる

では、現在「Book1.xls」を開いているかどうかを調べてみましょう。Sample14 をベースにして考えます。For Each ステートメント内では Workbooks コレクションのメンバーが順番に登場します。そこで、wb.Name が「Book1.xls」かどうかを判定します。

Sub Sample15()
    Dim wb As Workbook, flag As Boolean
    For Each wb In Workbooks
        If wb.Name = "Book1.xls" Then flag = True
    Next wb
    If flag = True Then
        MsgBox "Book1.xls を開いています。", vbInformation
    Else
        MsgBox "Book1.xls は開いていません。", vbInformation
    End If
End Sub

このとき、wb.Name = "Book1" と拡張子を除いて判定しようとすると失敗します。Workbook オブジェクトの Name プロパティには拡張子も含まれるからです。


[ブックを閉じる]戻る← | →進む[作業用ブックを開く]