ray88’s diary

お仕事で困ったとき用の自分用の覚書

ファイルが既に開かれているかどうか調べる

※こちらの方法もあり↓こちらの方が使い勝手良いかも。。。
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

ray88.hatenablog.com