- ベストアンサー
EXCEL VBAについて
お世話になります。 EXCEL VBAで指定したフォルダのEXCELブックが1つでもオープンされているかどうか知りたいのですが、可能でしょうか。 よろしくお願いいたします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
おはようございます。 たぶんVisual Basicのカテゴリーの方が答えてくれそうですが。 以下のような感じでいかがでしょう? ※[ツール]-[参照設定]で Microsoft Scripting Runtimeにチェック入れて下さい。 Dim Fso As New FileSystemObject 'ファイルシステムオブジェクト Dim xlBook As Workbook '開かれているブック Dim objFolder As Folder '調べるフォルダ Dim bOpenedBook As Boolean '開かれているかフラグ '調べるフォルダを「C:\tmp」とする。 Set objFolder = Fso.GetFolder("C:\tmp") bOpenedBook = False '今開かれているブックでループする。 For Each xlBook In Excel.Workbooks If Len(xlBook.Path) > 0 Then 'ブックが保存されているフォルダと調べるフォルダが一致するか? If objFolder Is Fso.GetFolder(xlBook.Path) Then '一致すれば開かれている bOpenedBook = True Exit For End If End If Next '結果をメッセージボックスで表示 If bOpenedBook Then MsgBox "開かれています。" Else MsgBox "一つも開かれていません。" End If Set Fso = Nothing
その他の回答 (1)
- pen_pen_pen
- ベストアンサー率65% (52/79)
できてよかったです(^^) If文の中でxlBookという変数(私の例で言えば)のプロパティを見れば、オープンされてるファイルのパスとかファイル名とか取れます。 フォルダが「xlBook.Path」 ファイル名が「xlBook.Name」 フルパスが「xlBook.FullName」 お好みの内容をお使い下さい。 ※上のプロパティ名は未確認です。微妙~に違ったりするかも。 でもそれらしいのは存在するのでお願いします。
お礼
さすがです。 できました。本当ににありがとうございます。 機会がありましたら、またお願いいたします。
お礼
ありがとうございました。 うまくできました。回答が遅くなってしまい申し訳ありませんでした。 あと、何がオープンされているか分かる方法はありますか? もしお分かりになりましたら、ご教授ください。