非IT企業に勤める中年サラリーマンのIT日記

非IT企業でしかもITとは全く関係ない部署にいる中年エンジニア。唯一の趣味がプログラミングという”自称”プログラマー。

Excel/VBAでExcelファイルを開く際に使用中ファイルだったら開かない方法

   

Excelマクロで、共有フォルダに入っているExcelファイルを開こうとした際に、誰かが使用中で読み取り専用で開いてしまうケースがあります。

もし誰かが開いていたら、メッセージを出して開かない、という方法を取りたい場合は以下のようにします。

広告

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を返します。

その後、指定のファイルを開くわけですが、”「読み取り専用の状態」だったら誰かが使っている”と見なしてメッセージを出すという流れです。

 

広告

 - Excel, VBA