hakeの日記

Windows環境でプログラミングの勉強をしています。

EXCEL VBAメモ - 他のブックのオープン・クローズの検出(Applicationイベント)

マクロが書かれているブックではないブック(エクセルファイル)のオープンやクローズをapplicationのイベントとして検出する。クローズはWorkbooks("hoge").Closeだけでなくて、ウィンドウ右上の×クリックによるクローズも検出できる。
VBEのクラスモジュールのメニューからmyEvent_****が他にもいろいろ選択可能。

クラスモジュール(名前をAppEventにした)

Option Explicit
Public WithEvents myEvent As Application

Private Sub myEvent_WorkbookOpen(ByVal Wb As Workbook)
    ' do_something
End Sub

Private Sub myEvent_WorkbookBeforeClose(ByVal Wb As Workbook, Cancel As Boolean)
    ' do_something
End Sub

ThisWorkbookモジュール

Option Explicit
Dim varEvent As New AppEvent '定義したクラスを変数として生成

Private Sub Workbook_Open()
    Set varEvent.myEvent = Application
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Set varEvent = Nothing
End Sub