子应用程序保存前工作簿不';t使用VBA加载项/Excel 2010
在保存工作簿之前,我将显示一个子应用程序保存前工作簿不';t使用VBA加载项/Excel 2010,excel,vba,event-handling,subroutine,Excel,Vba,Event Handling,Subroutine,在保存工作簿之前,我将显示一个消息框。我已尝试使用事件处理程序子应用程序\u WorkbookBeforeSave()和子工作簿\u BeforeSave,但两者都不起作用!为什么? 附件中有我的Sub: Private Sub App_WorkbookBeforeSave(ByVal Wb As Workbook, _ ByVal SaveAsUI As Boolean, Cancel As Boolean) Msg
消息框
。我已尝试使用事件处理程序子应用程序\u WorkbookBeforeSave()
和子工作簿\u BeforeSave
,但两者都不起作用!为什么?
附件中有我的Sub:
Private Sub App_WorkbookBeforeSave(ByVal Wb As Workbook, _
ByVal SaveAsUI As Boolean, Cancel As Boolean)
MsgBox "Good bye! Data is save."
End Sub
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
MsgBox "Good bye! Data is save."
End Sub
更新
我把它们放在
这个工作簿中
模块属于Microsoft Excel对象
这种功能需要
- 外接程序的此工作簿模块中的代码,或
- 使用类保存事件处理代码,同时仍在ThisWorkbook模块中启动它
Public WithEvents App As Application
Private Sub App_WorkbookBeforeSave(ByVal Wb As Workbook, ByVal SaveAsUI As Boolean, Cancel As Boolean)
On Error Resume Next
MsgBox "Good bye!"
End Sub
有了这些参数,你可以做一些很酷的恶作剧,比如阻止工作簿被保存
(我喜欢下一步的错误恢复,这样我们就不会冒不允许用户保存其工作簿的风险,因为我们的代码可能会出错)
在本工作簿模块中,放入如下内容
Dim objAppLis As New ImAGoodListener
Private Sub Workbook_Open()
Set objAppLis.App = Application
End Sub
这将在最初打开外接程序时启动事件侦听
或者,如果正在为功能区使用CustomUI,则可以使用功能区Onload事件触发侦听的开始(当我的事件主要用于功能区行为时,我会这样做,以便可以轻松禁用CustomUI xml中的侦听)
其他一些应用程序使用事件包括:
- 应用程序启动
- 应用程序\u工作簿激活
- 应用程序\u工作簿打开
- 关闭前的应用程序\u工作簿
- 保存前应用程序\u工作簿
Chip在他的网站上详细介绍了这类事件第二段代码看起来不错,请检查宏是否已启用,以及您是否已禁用事件。在保存
之前,您的工作簿对我有效……您确定您将其放入此工作簿模块中了吗?是的,我将其放入了此工作中book
属于Microsoft Excel对象
如果保存前的工作簿位于加载项的工作簿模块中,则在保存另一个工作簿时不会触发该工作簿。这就是您试图捕获的内容吗?如果是,则需要设置一些应用程序级事件。谷歌搜索“Excel应用程序事件”@蒂姆:你说得对!谢谢!