Word文档关闭时是否触发VBA事件?
我试图使用Word文档关闭时是否触发VBA事件?,vba,events,ms-word,Vba,Events,Ms Word,我试图使用Normal.dotm作为宏存储对象,类似于Excel中的Personal.xlsb对象 内置文件似乎无法触发,除非它包含在特定文档的ThisDocument对象中 我也尝试过这样使用此事件,但没有效果: Private Sub Application_Quit() Msgbox "closing word" End Sub 是否可以像在excel中一样使用Auto\u Close()等来侦听word应用程序的关闭 基于的@BigBen的尝试 类别模块“事件类别模块” 正常
Normal.dotm
作为宏存储对象,类似于Excel中的Personal.xlsb
对象
内置文件似乎无法触发,除非它包含在特定文档的ThisDocument
对象中
我也尝试过这样使用此事件,但没有效果:
Private Sub Application_Quit()
Msgbox "closing word"
End Sub
是否可以像在excel中一样使用Auto\u Close()
等来侦听word应用程序的关闭
基于的@BigBen的尝试 类别模块“事件类别模块” 正常模块“模块1”
当任何Word文档关闭时,有两种基本的捕获方法:
AutoClose
的宏。这是来自WordBasic(Word2.0和6.0)时代的“老式”方式AutoClose
,则这将超越运行“更一般”级别的宏。换句话说,特定于文档(或模板)的代码具有优先权
Sub AutoClose()
MsgBox "The document " & ActiveDocument.FullName & " is closing."
End Sub
DocumentBeforeClose
,可由用户和代码取消(请参阅事件签名中的Cancel
参数)
与自动关闭相比
,如果有多个文档或模板运行该事件,则会触发所有事件-没有优先级或“覆盖”
名为clsEvents的类模块
Public WithEvents app As Word.Application
Private Sub app_DocumentBeforeClose(ByVal Doc As Document, Cancel As Boolean)
MsgBox "The document " & Doc.FullName & " is being closed."
End Sub
模块
Public WithEvents App As Word.Application
Public myEvents As New clsEvents
Public Sub StartEvents()
Set myEvents.app = Word.Application
End Sub
Public Sub EndEvents()
Set myEvents.app = Nothing
End Sub
请注意,如果两种类型的事件都存在,AutoClose
在DocumentBeforeClose
之后触发
还请注意,有一个特定于文档的事件将仅针对该文档触发:document\u Close
。此事件必须位于该文档的ThisDocument
类模块中
Private Sub Document_Close()
End Sub
您究竟是如何尝试实现
应用程序_Quit
事件的?@BigBen添加了我对上述事件的尝试该事件的文档说明“此代码必须放在类模块中,并且必须正确初始化类实例才能看到此示例工作;有关如何完成此操作的说明,请参阅。”我会从那里开始。@BigBen我想我做了一次很好的尝试,但没有成功(尝试增加了问题)@BigBen的方法在Sub-App_-Quit()时有效
放在类模块中,而AutoExec
用在Normal.dotm
中的标准模块中,用于在word应用程序开始时初始化word app,如Dim X As New Class1 Sub AutoExec()Set X.app=word.application End Sub
。2007年测试正常。非常感谢你,这是一个非常令人沮丧的挂断,你在这里写的非常好helpful@Marcucciboy2事实上,我无法在快速搜索网站时找到这些信息,因此我发现写一篇完整的描述很重要。很高兴你问:-)
Private Sub Document_Close()
End Sub