OfficeType

VBA~目的のワークブックが開いているか調べよう~Excel

Sub test1()

Dim allbook As Workbook
Dim search As String

search = "サンプル.xlsx"

For Each allbook In Workbooks

If allbook.Name = search Then

MsgBox "指定のブックは開いています"
Exit Sub

End If

Next

MsgBox "指定のブックは開いていません"

End Sub

目的のワークブックが開いているか調べたい時はFor Each ~ Next文で全てのワークブックを取得し、1つずつ目的のワークブックと一致するか確認します。上のコードはallbookというワークブックオブジェクトを格納する変数を宣言しFor Each allbook In Workbooksですべてのワークブックを取得するまで一つずつ繰り返していきます。searchという変数に開いているか調べたいワークブックの名前を格納し、繰り返しの構文の中でIf文の条件式にallbook.Name = searchで全てのワークブックの中に調べたいワークブックがあるか判断しています。ワークブックがあればIfとEnd Ifの間に書かれたコードを実行するので"同名のブックは開いています"とメッセージを表示し、Exit Subででコードが終了します。

image-01

ワークブックが開いていない場合はIf文の条件式にallbook.Name = searchを満たさないのでIfとEnd Ifの間に書かれたコードは実行しないのでExit Subは実行せずに最後に書かれているMsgBox "指定のブックは開いていません"を実行しブックが開いていないとメッセージを表示します。

image-02