前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Word VBA技术:创建、打开或关闭文档时自动运行宏

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

作者头像
fanjy
发布2023-02-24 20:42:16
2.1K0
发布2023-02-24 20:42:16
举报
文章被收录于专栏:完美Excel完美Excel

标签:Word VBA

有多种方法可以使我们在创建、打开或关闭Word文档时自动运行宏。

方法1:使用文档事件

在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()过程。

注意,这些过程不是全局的,只有在创建、打开或关闭基于模板的文档时才会触发这些过程。

方法2:使用自动宏

实现相同目标的另一种方法是插入一个标准模块(单击VBE工具栏“插入-模块”),并编写名为AutoNew()、AutoOpen()或AutoClose()的宏。如果存储在除Normal.dotm以外的任何模板中,这些事件的行为方式与Document事件相同,当创建、打开或关闭附加到模板的文档时,它们将被触发。

然而,如果存储在Normal.dotm中,则它们将全局运行,换句话说,当创建、打开或关闭任何文档时,它们都将被触发。与存储在Normal.dotm中的Document_Open过程形成对比,后者仅在打开基于Normal.dotm的文档时执行。

不过,存储在加载项(存储在Word启动目录中的.dotm文件)中的AutoNew、AutoOpen和AutoClose宏将无法全局运行。事实上,在加载项中存储AutoNew、AutoOpen或AutoClose宏是没有意义的,因为不会(或不应该)将文档基于加载项。

方法3:使用应用程序事件

如果希望在打开任何文档时触发宏,而不管文档附加到哪个模板,如上所述,最简单的方法是编写一个AutoOpen宏并将其存储在Normal.dotm中。但是,在Normal.dotm中存储宏存在一些问题,因此如果想避免这种情况,最好使用应用程序事件。存储在全局加载项中的应用程序事件确实具有全局行为。一些应用程序事件与文档相关。

可以使用Application对象的DocumentOpen、NewDocument和DocumentBeforeClose事件,将它们存储在加载项中的工作方式与在Normal.dotm中存储自动宏类似。

有兴趣的朋友可以实践操作以加深理解。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-12-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 完美Excel 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档