ray88’s diary

お仕事で困ったとき用の自分用の覚書

VBA 特定の名前のブックが開かれているか確認する

Sub Sample()
Dim myChkBook As Workbook
    On Error GoTo ErrHdl
    Set myChkBook = Workbooks("Test.xls")
    MsgBox "開かれています。"
    Exit Sub    
ErrHdl:
    MsgBox "開かれていません。"
End Sub

■ファンクション化する場合
・ファンクションプロシージャ

Function sameNameBookOpenCheck(targetPath As String) As Boolean
'--------------------------------------------------------
'機能:指定したファイル名のブックが開かれているか確認し
'      結果をTrueかFalseで返す
'引数1:指定するファイル名
'--------------------------------------------------------
Dim ChkBook As Workbook
    On Error GoTo ErrHdl    
    Set ChkBook = Workbooks(targetPath)
    sameNameBookOpenCheck = True    
    Exit Function    
ErrHdl:
    sameNameBookOpenCheck = False
End Function

・呼び出し元プロシージャ

Sub Sample()
   Dim myPath As String
   myPath = "Test.xlsx"
   If sameNameBookOpenCheck(myPath) Then
       MsgBox "フックは開かれています"
   Else
       MsgBox "ブックは閉じています"
   End If
End Sub