繁体   English   中英

打开 Word 时不触发 Word VBA AutoNew 宏

[英]Word VBA AutoNew macro not firing when opening Word

使用 Word 2013。

我发现这个以前的问题是相似的,但没有被接受的答案,我不想构建一个加载项,所以我希望我不需要复杂的东西。

我的 Normal.dotm 中有 AutoNew 和 AutoOpen 宏。 它们运行良好,只是当我从任务栏或其他图标打开 Word 时,它们都不会触发。 在这种情况下,Word 会以空白的“Document1”打开,但没有我想要的初始化。

假设我的宏在打开或创建文档时显示带有文档名称的消息。 我知道这很愚蠢,但这似乎是一个可行的例子。

如果我通过在文件资源管理器中单击文档或使用 File | 打开文档打开或文件 | 新建,然后将触发相应的宏并弹出消息。

但是,如果我只是从头开始打开 ​​Word,则不会触发宏,也不会显示“Document1”消息。

我尝试使用 AutoExec 来解决这种情况,但是当 AutoExec 触发时,没有活动窗口,也没有加载文档。

想法?

问题中引用的示例不“可行”,因为想要显示自动生成的文档的名称是没有意义的。

在任何情况下,只有AutoExec会在 Word 应用程序启动时触发 - 这是设计使然。 当 Word 在应用程序启动时创建新的默认文档时, AutoNew不会触发。 (您还会注意到,如果您立即打开另一个文档,而不对默认文档进行任何操作,该文档将自动关闭。从某种意义上说,此默认文档不存在,直到用户对其进行操作。)

可以工作的是在 AutoExec 期间显式创建一个新文档。 这将具有生成文档代替默认文档的效果。 该文档将具有与该默认文档相同的名称。 唯一不同的是,当打开另一个文档时,该文档不会自动关闭。

创建Document_New将触发AutoNew (和Document_New )。

Sub AutoExec()

    Documents.Add

End Sub

在 Word 2016 中,64 位 AutoOpen 在 AutoExec 之前触发。 因此,如果您打开一个文件,当 AutoExec 运行时,您只能在没有文件已打开的情况下打开一个新文件。 因此,当您打开一个文件时,您不会同时打开另一个空白文档。

在 Word 2010 和 2013 中,AutoExec 在 AutoOpen 之前触发。 因此无法应用该解决方案。 但您可以要求 Word 关闭 AutoOpen 宏中的空白文件。

您是否尝试过在 Normal.dot 文件中为 Document_New() 和 Document_Open() 事件添加代码? 我只是用我的试了一下,但是我打开了测试文档,我让 Document_Open() 触发了。 Document_New() 也有效。

我的测试设置的屏幕截图。 相关的 msgbox 包括文档的名称。

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM