打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Word VBA技术:创建、打开或关闭文档时自动运行宏
userphoto

2022.12.25 四川

关注
excelperfect

标签:Word VBA
有多种方法可以使我们在创建、打开或关闭Word文档时自动运行宏。
方法1:使用文档事件
Word中,按Alt+F11组合键打开VBE,然后在“工程 – Project”窗口中,双击“Microsoft Word对象”,再双击“ThisDocument”。此时,在右侧代码窗口顶部,会看到两个列表框。单击左侧下拉列表,将其从“(通用)”更改为“Document”,VBA将自动创建一个名为Document_New()的过程。如果单击右侧下拉列表,将看到很多可供选择的事件,其中包含三个事件:NewOpenClose,可以从列表中选择“Close”或“Open”以插入Document_Close()Document_Open()过程,或者可直接在代码窗口输入过程名。
这样,每当创建基于该模板的文档时,将运行Document_New()过程;每当打开基于该模板的文档时,会运行Document_Open()过程;每当关闭基于该模板的文档时,会运行Document_Close()过程。
注意,这些过程不是全局的,只有在创建、打开或关闭基于模板的文档时才会触发这些过程。
方法2:使用自动宏
实现相同目标的另一种方法是插入一个标准模块(单击VBE工具栏“插入-模块”),并编写名为AutoNew()AutoOpen()AutoClose()的宏。如果存储在除Normal.dotm以外的任何模板中,这些事件的行为方式与Document事件相同,当创建、打开或关闭附加到模板的文档时,它们将被触发。
然而,如果存储在Normal.dotm中,则它们将全局运行,换句话说,当创建、打开或关闭任何文档时,它们都将被触发。与存储在Normal.dotm中的Document_Open过程形成对比,后者仅在打开基于Normal.dotm的文档时执行。
不过,存储在加载项(存储在Word启动目录中的.dotm文件)中的AutoNewAutoOpenAutoClose宏将无法全局运行。事实上,在加载项中存储AutoNewAutoOpenAutoClose宏是没有意义的,因为不会(或不应该)将文档基于加载项。
方法3:使用应用程序事件
如果希望在打开任何文档时触发宏,而不管文档附加到哪个模板,如上所述,最简单的方法是编写一个AutoOpen宏并将其存储在Normal.dotm中。但是,在Normal.dotm中存储宏存在一些问题,因此如果想避免这种情况,最好使用应用程序事件。存储在全局加载项中的应用程序事件确实具有全局行为。一些应用程序事件与文档相关。
可以使用Application对象的DocumentOpenNewDocumentDocumentBeforeClose事件,将它们存储在加载项中的工作方式与在Normal.dotm中存储自动宏类似。
有兴趣的朋友可以实践操作以加深理解。
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Word 2013中的“自动化”
损坏的Word模板以全局模板来修复之方法
为什么我的WORD一按复制就无响应了
宏的录制和保存
Word2010删Normal模板恢复默认字体
word文档中无法插入页码怎么办
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服