1

すべてのワークブック (マクロの有無にかかわらず) で Open イベントと Save イベントをキャッチしたいだけです。私が理解しているように、 Event 対応のコードを含む AddIn が必要です。インターネットで多くの例を見つけました。次のように、stackoverflow の例を学びました: How can an Excel Add-In Respond to events in any worksheet? しかし、それはうまくいきません。誰も問題を報告しません。だから、私はここで単純な間違いをしていると思います。たとえば、次のアドインがあります。

クラス モジュール (ExcelEventCapture) - プライベート:

Option Explicit
Public WithEvents ExcelApp As Excel.Application

Private Sub Class_Initialize()
Set ExcelApp = New Excel.Application
ExcelApp.EnableEvents = True
MsgBox "ExcelApp OK"
End Sub

Private Sub ExcelApp_NewWorkbook(ByVal Wb As Workbook)
Wb.Close savechanges:=False
MsgBox "Sorry - you can't create workbooks in this system!"
End Sub

ThisWorkbook に配置されたこのコード:

Option Explicit
Private ExcelEvents As ExcelEventCapture
Private Sub Workbook_Open()
Set ExcelEvents = New ExcelEventCapture
MsgBox "ExcelEvents OK"
End Sub

このコードを保存/変更するたびに、アドインマネージャーを使用してこのアドインをオフ/オンに切り替えます。電源を入れると「ExcelApp OK」「ExcelEvents OK」と表示されました。しかし、新しいワークブックを作成しても、イベントは発生しません。その他のイベントも処理されません。2007/2010 Excel で試してみます。結果は同じです。助けてください。

4

1 に答える 1

2

あなたのコードは正しくありません:

クラス モジュール (ExcelEventCapture)

Option Explicit

Public WithEvents ExcelApp As Application

Private Sub ExcelApp_NewWorkbook(ByVal Wb As Workbook)
    Wb.Close savechanges:=False
    MsgBox "Sorry - you can't create workbooks in this system!"
End Sub

ThisWorkbook に配置されたこのコード:

Option Explicit

Private ExcelEvents As New ExcelEventCapture

Private Sub Workbook_Open()
    Set ExcelEvents.ExcelApp = Application
    MsgBox "ExcelEvents OK"
End Sub
于 2012-05-06T00:46:08.770 に答える