我创建了一个 Excel 加载项,尝试在打开此会话期间打开的任何和所有工作簿时运行。有时它会起作用 - 但并非总是如此,我不知道为什么。
我创建了一个文件,addin.xlam
,并且在这个文件中,在ThisWorkbook
, 我有:
Private XLApp As CExcelEvents
Private Sub Workbook_Open()
Set XLApp = New CExcelEvents
End Sub
然后我根据此处的代码创建了一个类模块:http://www.cpearson.com/Excel/AppEvent.aspx http://www.cpearson.com/Excel/AppEvent.aspx
Private WithEvents App As Application
Private Sub Class_Initialize()
Set App = Application
End Sub
Private Sub App_WorkbookOpen(ByVal Wb As Workbook)
If Not ActiveWorkbook Is Nothing Then
If InStr(ActiveWorkbook.Name, "New Quote") Then
quoteCheck = MsgBox("Do you want to run the Quote Generator?", vbYesNo, "Quote Generator")
If quoteCheck = vbYes Then
prepare
Else
End
End If
End If
End If
End Sub
如果我关闭 Excel 并从 Windows 资源管理器打开文件,则会出现以下行:
Private Sub App_WorkbookOpen(ByVal Wb As Workbook)
并启动代码 - 如果相关工作簿的名称中包含“new quote”,则宏将运行。繁荣。完美的。
但是,在运行一次后,如果我打开另一个包含“新报价”字样的工作簿,则不会触发此私有子。为什么?
我怎样才能触发这个每一次 I open any作业簿?