Excel/VBAでExcelファイルを開く際に使用中ファイルだったら開かない方法
Excelマクロで、共有フォルダに入っているExcelファイルを開こうとした際に、誰かが使用中で読み取り専用で開いてしまうケースがあります。
もし誰かが開いていたら、メッセージを出して開かない、という方法を取りたい場合は以下のようにします。
[ad#top-1]
Sub OpenBook() If IsBookOpen(fname) = False Then With Workbooks.Open(Filename:="Book1.xlsx", ReadOnly:=False, IgnoreReadOnlyRecommended:=True) If .ReadOnly Then .Close False MsgBox "他のPCで使用中です" End End If End With End If End Sub Function IsBookOpen(bookname) As Boolean Dim bk As Workbook IsBookOpen = False For Each bk In Workbooks If bk.Name = bookname Then IsBookOpen = True Exit For End If Next End Function
IsBookOpen
関数は、他人ではなく自分自身で開いていないことを確認するための自作関数です。もし自分自身で開いていたらTrue
を返します。
その後、指定のファイルを開くわけですが、”「読み取り専用の状態」だったら誰かが使っている”と見なしてメッセージを出すという流れです。
[ad#ad-1]
スポンサーリンク