vba - 如何使用相对路径访问宏中的构建块?
问题描述
我想使用将存储在 .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
解决方案
有几种方法可以获取用户主目录中 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
推荐阅读
- python - 使用公共列连接两个 csv 文件
- reactjs - 是否可以将不同的 monorepos 包部署到不同的域
- vba - 使用 Access VBA 在网络位置移动文件夹
- python - 更改 seaborn boxenplot 轮廓颜色
- java - 在资源文件中使用maven项目信息
- javascript - 在 Vue PUT POST DELETE 方法中显示包含中间件时不允许
- javascript - ExpressJS:重定向到客户端处理的 URL
- react-redux - React-Redux-Saga TypeError:无法读取 null 的属性“数据”
- html - .htaccess 从 url 中删除 html 不起作用
- c++ - 如何在 C++/犰狳中去掉不连续的索引