DocumentBeforeClose语法

时间:2012-01-01 15:24:23

标签: vba word-vba

我真的不知道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”意味着什么,我做错了什么?现在关闭文档时没有执行任何事件。

2 个答案:

答案 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将宣布该文件即将关闭

希望它有所帮助!