すべてのブック(マクロありまたはなし)で開くイベントと保存イベントをキャッチしたいだけです。 私が理解しているように、私はEventInが有効なコードでAddInが必要です。私はインターネットで多くの例を見つけました。私はここのようなstackoverflowの例を学んだ:How can an Excel Add-In respond to events in any worksheet? しかし、それは動作しません。誰も問題を報告しません。だから、私はここで簡単な間違いがあると思う。 私は、たとえば、次のアドインを持っている:VBA Addins:イベントが機能しません。
クラスモジュール(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で試してみます。結果は同じです。 助けてください。
私は完全に一定ではありませんよ、なぜあなたはSet ExcelApp = Excel.Application'の代わりに "New Excel Application"をインスタンス化しますか?また、 'Auto_Open()'でAddIn自体のクラスをインスタンス化することもできます。 – ExternalUse