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]
スポンサーリンク