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