Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba DocumentBeforeClose语法_Vba_Ms Word - Fatal编程技术网

Vba DocumentBeforeClose语法

Vba DocumentBeforeClose语法,vba,ms-word,Vba,Ms Word,我真的不知道DocumentBeforeClose事件的语法。在下一页中,我应该创建一个名为“EventClassModule”的类模块(另请参阅文章)。所以我做了。然后我将这段代码(来自第一个链接的示例)复制到该(类)模块中: 最后,我把它放在一个普通模块中,并执行它: Dim X As New EventClassModule Sub Register_Event_Handler() Set X.App = Word.Application End Sub 在这种情况下,“X”是什

我真的不知道DocumentBeforeClose事件的语法。在下一页中,我应该创建一个名为“EventClassModule”的类模块(另请参阅文章)。所以我做了。然后我将这段代码(来自第一个链接的示例)复制到该(类)模块中:

最后,我把它放在一个普通模块中,并执行它:

Dim X As New EventClassModule 
Sub Register_Event_Handler() 
 Set X.App = Word.Application 
End Sub

在这种情况下,“X”是什么意思?我做错了什么?现在关闭文档时没有执行任何事件。

X
是您创建的类的实例(
EventClassModule

您的问题是
.App
不是
EventClassModule
的属性。改变

Set X.App = Word.Application 
指向您在类中定义的属性

Set X.appWord = Word.Application 

我也试过同样的方法!事实上它对我有用。我在名为
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。因此它调用子寄存器\事件\处理程序来注册对象X(它是一个对象EventClassModule,创建的类模块)。因此,X将被通知文档即将关闭

希望有帮助

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