我真的不知道DocumentBeforeClose事件的语法。在this页面之后,我应该创建一个名为“EventClassModule”的类模块(另请参阅this文章)。所以我做了。然后我将这段代码(从第一个链接的示例中)复制到该(类)模块中:
Public WithEvents appWord as Word.Application
Private Sub appWord_DocumentBeforeClose _
(ByVal Doc As Document, _
Cancel As Boolean)
Dim intResponse As Integer
intResponse = MsgBox("Do you really " _
& "want to close the document?", _
vbYesNo)
If intResponse = vbNo Then Cancel = True
End Sub
最后我把它放在一个普通模块中,并执行它:
Dim X As New EventClassModule
Sub Register_Event_Handler()
Set X.App = Word.Application
End Sub
在这种情况下,“X”意味着什么,我做错了什么?现在关闭文档时没有执行任何事件。
答案 0 :(得分:2)
X
是您创建的类的实例(EventClassModule
)
您的问题是.App
不是EventClassModule
的属性。改变
Set X.App = Word.Application
到您在班级中定义的属性
Set X.appWord = Word.Application
答案 1 :(得分:1)
我尝试过同样的事情!实际上它对我有用。我在名为EventClassModule
Public WithEvents appWord As Word.Application
Private Sub appWord_DocumentBeforeClose _
(ByVal Doc As Document, _
Cancel As Boolean)
'Here is the code you want to do before it close
MsgBox "WORKING!"
End Sub
在模块(不是类模块)中我有这个
Dim X As New EventClassModule
Sub AutoExec()
'Call any other sub or function you want
Call Register_Event_Handler
End Sub
Sub Register_Event_Handler()
Set X.appWord = Word.Application
End Sub
加载文档后立即调用AutoExec。因此它调用子Register_Event_Handler来注册对象X(这是一个对象EventClassModule,创建了类模块)。因此,X将宣布该文件即将关闭
希望它有所帮助!