更新日:、 作成日:
VBA ワークブックの存在確認をする
はじめに
Excel VBA マクロでワークブックが存在するかチェックする方法を紹介します。
Workbooks をループして Name プロパティから、ブック名で存在チェックできます。
すでに開いているブックの存在を確認できます。
シートの存在確認をするには「シートの存在確認をする」をご覧ください。
ブックを指定して取得するには「ワークブックを取得する」をご覧ください。
ブックの存在チェックをする
すべてのブック Workbooks をループして、指定した名前のブックが存在するかで判定できます。
' Workbooks に指定した名前のブックが存在するか判定する
Public Function ExistsWorkbook(ByVal bookName As String)
Dim wb As Workbook
For Each wb In Workbooks
If LCase(wb.Name) = LCase(bookName) Then
ExistsWorkbook = True ' 存在する
Exit Function
End If
Next
' 存在しない
ExistsWorkbook = False
End Function
戻り値が True なら存在します。False なら存在しません。
次のように引数に存在確認したいブック名を入力します。大文字と小文字は区別しません。
Dim b As Boolean
b = ExistsWorkbook("Book1.xlsx") ' ブック「Book1.xlsx」が存在するか
b = ExistsWorkbook("ブック2.xlsx") ' ブック「ブック2.xlsx」が存在するか
Debug.Print(b)
パスで存在チェック
ブック名ではなくパスで存在確認をするには Workbook.FullName プロパティから絶対パスを取得できます。
' Workbooks に指定したパスのブックが存在するか判定する
Public Function ExistsWorkbook(ByVal fullPath As String)
Dim wb As Workbook
For Each wb In Workbooks
If LCase(wb.FullName) = LCase(fullPath) Then
ExistsWorkbook = True ' 存在する
Exit Function
End If
Next
' 存在しない
ExistsWorkbook = False
End Function
Dim b As Boolean
' Folder1 のブック「Book1.xlsx」が存在するか
b = ExistsWorkbook("D:\Folder1\Book1.xlsx")
' Folder2 のブック「Book1.xlsx」が存在するか
b = ExistsWorkbook("D:\Folder2\Book1.xlsx")
Debug.Print(b)