【问题标题】:How to distibute Word VBA macros to multipe Word docs?如何将 Word VBA 宏分发到多个 Word 文档?
【发布时间】:2018-09-29 08:56:25
【问题描述】:

我有一组非常复杂的宏,可以为 Word 文档增加力量。在我的公司内,宏已经扩展到几十个 Word 文档实例。我不时地改进或修复宏,但是将修复分发到现有 Word 文件的数十个实例是很痛苦的。我应该怎么做才能简化分发?

我可以写一个宏来导入宏吗? :-)

【问题讨论】:

    标签: vba ms-word


    【解决方案1】:

    在 Word 文档中包含宏既是福也是祸:分发简单,但难以维护。

    除了在文档中分发之外,您还有两种提供宏的基本策略,都涉及将宏放在模板中(dotm 文件)。执行此操作时,不仅可以使用宏,还可以使用模板中的功能区自定义和键盘快捷键。这减少了您必须维护的存储文件的数量。

    1. 模板通过“附加模板”属性链接到特定文档。附加模板中的宏仅适用于链接到该模板的文档。模板会自动链接到使用文件/新建从它创建的任何文档。可以事后附加模板

      • 在 UI 中:通过从开发人员选项卡/文档模板/附加中选择模板。 (默认情况下,Normal.dotm 是附加的模板。)
      • 通过对象模型使用ActiveDocument.AttachedTemplate = "File path and name.dotm"

      模板可以存储在单个用户的“模板”文件中(在 Windows 7 中,默认情况下类似于C:\Users\[user name]\AppData\Roaming\Microsoft\Templates)或网络上的共享模板位置。通过这种方式,它可以通过 File/New 获得。 (它也可以存储在其他任何地方,但不会出现在 File/New 中。)

    2. 模板作为插件加载。这最适合在“所有”文档中使用的功能,而不仅仅是特定文档类型。

      • 如果 Word 应该自动加载模板,请将模板保存在用户的 Word/Startup 文件夹中(在 Windows 7 上,默认安装路径类似于 C:\Users\[unser name]\AppData\Roaming\Microsoft\Word\STARTUP
      • 模板加载项也可以由用户通过上述文档模板按钮显式加载,使用对话框“全局模板和加载项”部分中的“添加”按钮。

    理论上,可以使用宏来编辑宏。这涉及在完成它的计算机上引入安全风险(因为这是传播宏病毒的方式)。而且这样做的对象模型文档很少,也不是很复杂(IOW 编写代码并不容易)。

    • 您需要在文件/选项/信任中心/信任中心设置/宏设置中手动勾选“信任对vba项目对象模型的访问”选项。

    • 您需要在代码项目中添加对 VBA 编辑器工具/参考中“Visual Basic for Applications Extensibility 5.3”的引用

    第三种可能性是使用 VBA 编辑器的文件/导出文件命令将代码模块备份/导出/保存为纯文本文件。然后使用文件/导入文件命令将代码引入其他文档/模板。 (注意:您首先需要删除已存在的任何同名代码模块。)从文件中导入代码的 FWIW 在 VBA 可扩展性对象模型中也可用。

    【讨论】:

    • 这是一个很好的答案。我将尝试教 Word 文档附加存储在网络上的模板,并且我将修改以编程方式导入代码模块。我想要更新/导入的模块之一是包含图形对象和随附代码的用户窗体。您对如何在不接触该用户表单的对象的情况下导入用户表单的代码有什么建议吗?
    • 棘手。您可以在记事本中编辑代码,但不能只导入代码。您必须导出全部内容,删除全部内容,编辑代码,然后将两者都导入。问题是你不能有两个同名的对象。但是这种事情属于一个新问题:-)
    • 顺便说一句,不要忘记在 Stack Overflow 上“感谢”的正确方法是激活“答案”旁边的复选标记以及支持 :-)
    猜你喜欢
    • 1970-01-01
    • 2011-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-05
    相关资源
    最近更新 更多