如何使用相对路径访问宏中的构件?

时间:2019-06-26 22:02:53

标签: vba ms-word

我想使用表的构建块,该表将存储在用户的STARTUP文件夹中的.dotm中。但是,我只知道如何使用绝对文件路径编写宏,但这将无法工作,因为将共享.dotm。

.dotm文件还将存储标题为“样本表”的构建块,并具有所有格式的文件。我知道我可以使用VBA重建表,但是宽度永远无法满足我的需要,因此我尝试使用构建块。

Application.Templates( _
    "C:\Users\MYUSER\AppData\Roaming\Microsoft\Word\STARTUP\Templates.dotm" _
    ).BuildingBlockEnries("sample_table").Insert Where:=Selection. _
    Range, RichTest:=True

1 个答案:

答案 0 :(得分:0)

有两种方法可以获取用户主目录中Word的STARTUP文件夹的路径(该路径相对于每个唯一用户)。

最简单的方法可能是:

Application.Templates(Application.Options.DefaultFilePath(wdStartupPath) & "\" & _
    "Templates.dotm").BuildingBlockEntries("Sample_Table").Insert _
    Where:=Selection.Range, RichText:=True

但是,有时您可能希望遍历所有全局加载项,并根据发现的内容做出决定。下面是执行此操作的示例代码:

Sub FindAddin()
    Dim WordAddin As Word.AddIn
    Dim i As Long
    For i = 1 To Application.AddIns.Count
        If Application.AddIns(i).Name = "Templates.dotm" Then
            Set WordAddin = Application.AddIns(i)
            Exit For
        End If
    Next
    If WordAddin Is Nothing Then Exit Sub
    Application.Templates(WordAddin.path & "\" & _
        WordAddin.Name).BuildingBlockEntries("Sample_Table").Insert _
        Where:=Selection.Range, RichText:=True
End Sub