• ベストアンサー

Excel VBA でファイルが開かれているか確認する

ExcelのVBAで、book1.xlsというファイルが現在開かれているか確認するにはどんなプロパティを使えばいいでしょうか? 実際にやりたい事は、book1.xlsに対して処理するマクロがあるのですが、そのbook1.xlsが開かれていなければ処理が出来ないのでマクロが入っているファイルを閉じる。というものです。

質問者が選んだベストアンサー

  • ベストアンサー
  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.2

Workbookは、Workbooksコレクションによって管理されているので、Worlbooksの中身を列挙することでチェック可能です。 Dim wb As WorkBook Dim blnFlag As Boolean For Each wb In Workbooks   If wb.Name = "book1.xls" Then     blnFlag = True     Exit For   End If Next もっと手っ取り早くですと、 Set wb = Workbooks("book1.xls") これでエラーが発生したら開いていないと判断できます。 ただし、この処理を呼ぶ前にOn Error Resume Nextでエラートラップを無効にしておかないと処理が中断してしまいます。

koba_nob
質問者

お礼

出来ました! ありがとうございます。 「開いているかどうか?」っていうメソッドやプロパティは無いのですね。 ヘルプを一所懸命探していました。 早速の回答大変助かりました。ありがとうございました。

その他の回答 (1)

  • nek784
  • ベストアンサー率35% (145/411)
回答No.1

 ファイルが開いているということはそのファイルを開いた時に読取専用になる ので読取専用かどうかチェックするのはどうでしょうか。  ちょっとおおざっぱですが,次のような感じでどうでしょうか。 If .ReadOnly Then ’ファイルを閉じる Else ’処理を行う End If

koba_nob
質問者

お礼

早速の回答ありがとうございます。 この方法だと、開こうとしたファイルが無い時はエラーになってしまいます。

関連するQ&A