※こちらの方法もあり↓こちらの方が使い勝手良いかも。。。
Excel VBA ファイルが既に開かれているかどうか調べる その② - ray88’s diary
■使用にあたっての注意事項
たとえば、各部署ごとにフォルダが分かれていて、各同じファイル名のファイルが格納されている場合(経理部フォルダの集計.xlsx, 営業部フォルダの集計.xlsx)
など、各部署ごとにフォルダ名は異なるが格納されているファイル名が全て集計.xlsxなど同一の場合、以下のファイルが既に開かれているかどうかのファンクションプロシージャ自体は正常に動作するが、その後各ブックを開いて処理する際、既に同じ名前のファイルが開かれていると、同名ファイルは開けない為エラーとなることに注意する。
ファイル名が共通の場合はプロシージャの冒頭で以下の方法で確認し、開かれている場合はExitSubで抜けるなどの方法もある。
VBA 特定の名前のブックが開かれているか確認する - ray88’s diary
■メインプロシージャより呼び出されるファンクションプロシージャ
Public Function IsBookOpened(ByVal FilePath As String) As Boolean On Error Resume Next Open FilePath For Append As #1 Close #1 If Err.Number > 0 Then IsBookOpened = True End If End Function
■メインプロシージャ
Sub test() Dim myPath As String myPath = "C:\Smple\テスト.xlsx" If IsBookOpened(myPath) Then MsgBox "フックは開かれています" Else MsgBox "ブックは閉じています" End If End Sub