有多种方法可以使我们在创建、打开或关闭Word文档时自动运行宏。在Word中,按Alt+F11组合键打开VBE,然后在“工程 – Project”窗口中,双击“Microsoft Word对象”,再双击“ThisDocument”。此时,在右侧代码窗口顶部,会看到两个列表框。单击左侧下拉列表,将其从“(通用)”更改为“Document”,VBA将自动创建一个名为Document_New()的过程。如果单击右侧下拉列表,将看到很多可供选择的事件,其中包含三个事件:New、Open和Close,可以从列表中选择“Close”或“Open”以插入Document_Close()或Document_Open()过程,或者可直接在代码窗口输入过程名。这样,每当创建基于该模板的文档时,将运行Document_New()过程;每当打开基于该模板的文档时,会运行Document_Open()过程;每当关闭基于该模板的文档时,会运行Document_Close()过程。注意,这些过程不是全局的,只有在创建、打开或关闭基于模板的文档时才会触发这些过程。实现相同目标的另一种方法是插入一个标准模块(单击VBE工具栏“插入-模块”),并编写名为AutoNew()、AutoOpen()或AutoClose()的宏。如果存储在除Normal.dotm以外的任何模板中,这些事件的行为方式与Document事件相同,当创建、打开或关闭附加到模板的文档时,它们将被触发。然而,如果存储在Normal.dotm中,则它们将全局运行,换句话说,当创建、打开或关闭任何文档时,它们都将被触发。与存储在Normal.dotm中的Document_Open过程形成对比,后者仅在打开基于Normal.dotm的文档时执行。不过,存储在加载项(存储在Word启动目录中的.dotm文件)中的AutoNew、AutoOpen和AutoClose宏将无法全局运行。事实上,在加载项中存储AutoNew、AutoOpen或AutoClose宏是没有意义的,因为不会(或不应该)将文档基于加载项。如果希望在打开任何文档时触发宏,而不管文档附加到哪个模板,如上所述,最简单的方法是编写一个AutoOpen宏并将其存储在Normal.dotm中。但是,在Normal.dotm中存储宏存在一些问题,因此如果想避免这种情况,最好使用应用程序事件。存储在全局加载项中的应用程序事件确实具有全局行为。一些应用程序事件与文档相关。可以使用Application对象的DocumentOpen、NewDocument和DocumentBeforeClose事件,将它们存储在加载项中的工作方式与在Normal.dotm中存储自动宏类似。
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 »
Word VBA技术:创建、打开或关闭文档时自动运行宏
0条评论