我正在使用以下VBA代码在保存Word文档时显示一个消息框,
Public WithEvents appWord as Word.Application
Private Sub appWord_DocumentBeforeSave _
(ByVal Doc As Document, _
SaveAsUI As Boolean, _
Cancel As Boolean)
Dim intResponse As Integer
intResponse = MsgBox("Do you really want to " _
& "save the document?", _
vbYesNo)
If intResponse = vbNo Then Cancel = True
End Sub
此代码是在Class中编写的。但这不起作用。保存时没有任何反应。这是什么问题?
答案 0 :(得分:3)
我让它发挥作用。感谢AnalystCave.com的帮助。这就是我所做的:
我创建了一个名为 EventClassModule 的新类,并复制了以下代码,
Public WithEvents App As Word.Application
Private Sub App_DocumentBeforeSave _
(ByVal Doc As Document, _
SaveAsUI As Boolean, _
Cancel As Boolean)
Dim intResponse As Integer
intResponse = MsgBox("Do you really want to " _
& "save the document?", _
vbYesNo)
If intResponse = vbNo Then Cancel = True
End Sub
然后创建了一个名为 mdlEventConnect 的模块并复制了以下代码,
Dim X As New EventClassModule
Sub Register_Event_Handler()
Set X.App = Word.Application
End Sub
此后在 ThisDocument 上复制了以下代码,
Private Sub Document_New()
Register_Event_Handler
End Sub
Private Sub Document_Open()
Register_Event_Handler
End Sub
保存文件并重新打开。现在,当我尝试保存文档时,它完美地执行了 DocumentBeforeSave 事件。
答案 1 :(得分:1)
将其放在Word中VBA项目的ThisDocument
部分,而不是Class
,因为它不会在那里工作。
这是一个例子: https://msdn.microsoft.com/en-us/library/office/ff838299.aspx
答案 2 :(得分:1)
使用Word 2016,我发现需要进行更改
Set X.App = Word.Application
应该是
Set X.appWord = Word.Application