尽管可以使用上一个技巧中的方法从另一个宏运行VBA宏,但有时这种方法无法胜任。相反,您需要寻找一种允许使用故障安全方法运行宏的解决方案。一种方法是在VBA中使用Call命令。但是,在使用命令之前,您需要向调用项目添加项目引用。 (项目就是VBA如何引用模板中VBA模块,表单等的集合。例如,VBA将Normal模板称为“ Normal”

项目。)项目之间的引用提供了明确的定义调用项目与要调用的项目之间的链接。

例如,假设MyMacro宏(您要运行的宏)是CoolDoc模板的一部分。若要在VBA中正确使用“调用”,您需要将对CoolDoc.dotm项目的引用添加到将调用MyMacro的宏中。不幸的是,由于VBA中可能存在“陷阱”,所以说起来容易做起来难:除了“正常”之外

项目,VBA为所有用户创建的模板项目提供默认项目名称“ TemplateProject”。这可能会造成问题,因为在希望具体说明要运行的宏时,最好使用唯一的项目名称。若要给CoolDoc.dotm一个唯一的项目名称,请按照下列步骤操作:

。确保CoolDoc.dotm模板已打开。

。通过按Alt + F11来显示VBA编辑器。

。在VBA编辑器左上角的“项目”窗口中,右键单击模板的文件夹。由于CoolDoc是模板,因此该文件夹名为TemplateProject(CoolDoc)。 Word将显示一个上下文菜单。

。从上下文菜单中选择TemplateProject属性选项。

显示“属性”对话框。

。在项目名称字段中,为您的项目输入合适的名称。

(CoolDoc是唯一的名字,只要它是唯一的。)

。单击确定。对话框消失,项目重命名为CoolDoc。

如果展开CoolDoc下的所有对象,则应在项目中看到一个或两个模块。 (请记住; VBA宏包含在模块中。)为了便于讨论,我们假设MyMacro(要运行的宏)包含在CoolDoc项目的HotStuff模块中。

(所有这些对象名称将很快使用。这时,您只需要注意用于项目和带有宏的模块的名称即可。)

现在您已经准备好将CoolDoc项目引用实际添加到将要从中调用宏的项目。在这种情况下,假设您将从Normal项目中的宏调用它。您可以按照以下步骤添加参考(假设VBA编辑器仍处于打开状态):

。在VBA编辑器左上方的“项目”窗口中,选择“普通”文件夹。

。从工具菜单中选择引用。显示“引用”对话框。 (请参见图1。)

。在可用参考列表中,找到CoolDoc。

。确保选中CoolDoc选项左侧的复选框。

。单击确定。

最后,您准备将Call语句添加到要从其调用MyMacro的宏中。命令行将如下所示:

Call CoolDoc.HotStuff.MyMacro

此命令行使VBA运行所需的宏,而不会产生任何歧义。但是,有一些重要的注意事项。

在Normal中放置对CoolDoc项目的引用会使每次Word启动时Normal都加载CoolDoc的副本-即使没有打开基于CoolDoc.dotm模板的文档。

加载CoolDoc引发了一个明显的问题:在VBA中,将MyMacro放在CoolDoc.dotm中有什么意义,因为它不会节省加载时间或资源使用量?简短的答案是,除了CoolDoc.dotm可能是一个更明显的放置仅与CoolDoc.dotm中的内容相关的代码的地方之外,没有任何意义。 (明智的项目设计的整个主题实在太大了,无法在本文中讨论。)

注意:

如果您想知道如何使用此页面(或_WordTips_网站上的任何其他页面)中描述的宏,我准备了一个包含有用信息的特殊页面。

_WordTips_是您进行经济有效的Microsoft Word培训的来源。

(Microsoft Word是世界上最流行的文字处理软件。)此技巧(11412)适用于Microsoft Word 2007、2010、2013、2016、2019和Office 365中的Word。 Word的旧菜单界面在这里: