首页 > 解决方案 > 如何使用相对路径访问宏中的构建块?

问题描述

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

.dotm 文件还将存储名为“示例表”的构建块,并将所有内容格式化。我知道我可以使用 VBA 重建表格,但宽度永远不会达到我需要的方式,所以我正在尝试使用构建块。

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

标签: vbams-word

解决方案


有几种方法可以获取用户主目录中 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

推荐阅读