从dotm加载宏

时间:2018-11-08 13:58:53

标签: vba ms-word

方案: word启动时,它通过vba连接到服务,该服务返回路径列表。这些路径中的每一个都指向一个.dotm文件。这些文件包含有关各种控件的信息(功能区内部,例如,添加了特定页脚的按钮)。

我想要的是:我需要加载多个.dotm文件,但不能将它们复制或移动到特定位置。

基本上就是这样。我进行了广泛的搜索,我担心这种方法实际上是不可能的,而且我必须将所有dotm文件复制到启动文件夹中,让Word来完成其余工作

有什么方法可以将多个dotm文件加载到单个word文件中,从而使功能区根据dotm的不同而扩展

最诚挚的问候,谢谢:)

2 个答案:

答案 0 :(得分:1)

摘自Word文档:

  

此示例将模板“ Letter.dot”附加到活动文档。

ActiveDocument.AttachedTemplate = "C:\Templates\Letter.dot"

您可以使用它来将所有模板附加到文档。

另请参阅Templates集合。

  

您可以通过将Add方法与Addins集合一起使用来将模板添加到Templates集合中,以加载全局模板

Sub AddTemplate()
    ' For this example to work correctly, verify that the
    ' path is correct and the file exists.

    AddIns.Add FileName:="C:\Program Files\Microsoft Office" _
        & "\Templates\Letters & Faxes\MyFax.dot", Install:=True
End Sub

答案 1 :(得分:1)

不可能将多个模板加载到单个Word文件中。只能将一个模板附加到文档。

可以在Word环境中将多个模板作为加载项加载。然后,这些文件将可用于在Word应用程序中打开的所有文档。使用Addins-Add方法将模板添加到“文档/文档模板”中的列表中,并在“全局模板和加载项”列表中。 (这等效于对话框中的“添加”按钮。)

Dim bInstalled as Boolean
Dim Path as String
Dim fileName as String

'Populate the variables, then...
Application.Addins.Add Filename:=Path & fileName, Install:=bInstalled

如果希望模板在列表中但未加载,则将bInstalled设置为false(例如,不显示功能区);将其设置为true也可以加载它。模板一旦进入列表,无论是加载还是卸载,通常都会保留在列表中,除非以某种方式重置了Word。如果先检查列表中是否已存在某个加载项,然后再将其添加,则用于管理模板加载项的代码将更加高效。

可以使用Addins.Installed属性来加载/卸载列表中的模板。如果模板中的工具仅对某些文档可用,则可以使用事件(例如DocumentChange)来动态加载/卸载它们。

加载加载项和管理加载项(事件)的代码可能应该在Word的“启动”文件夹中的中央模板中,或者在直接附加到文档的模板中。