程序启动时 Word VBA 构建块不能立即使用

程序启动时 Word VBA 构建块不能立即使用

我在文档中使用了一些形状,最近从即时创建这些形状(速度很慢!)切换到使用构建块。我通过 VBA 代码从表单插入这些块。

构建块位于单独的文件中。

这一切都正常,但不知何故,当我加载文档或任何新文档时,构建块不存在。我收到错误 5941“集合成员不存在”。

VBA 代码明确引用了存在的构建块文件。

Const blockpath = "C:\Users\XXX\AppData\Roaming\Microsoft\Document Building Blocks\1030\16\Building Blocks.dotx"

Dim r As Range
Set r = Application.Templates(blockpath).BuildingBlockEntries("XYZ").Insert(Selection.Range, True) ' range containing inserted block

当我从功能区单击构建块一次时,VBA 代码就可以运行,并且元素可用。

Word 丹麦语环境中的 Building Blocks 按钮图像

问题我可以在代码中做什么来检查这一点,并使这些块从一开始就可用?

编辑:

  • 当我使用宏记录器插入构建块时,VBA 中没有添加任何“附加模板”或类似内容。
  • 在单击构建块按钮之前,VBA 项目不包含构建块。单击之后,它包含构建块。

单击构建块之前和之后的 VBA 项目

答案1

Word 的行为是,除非调用某个构建块,否则不会加载该构建块。

您可以使用以下命令强制加载:

application.Templates.LoadBuildingBlocks

如果它们已经加载,这虽然是多余的,但不会影响任何东西。

您还可以将积木支架作为插件加载。

可以通过将其放置在您的Word 启动文件夹或通过 vba。

vba 屏幕截图

当包含 BB 的模板作为插件加载时,它立即可供 vba 使用。我经常将自定义构建块添加到模板插件中,而不是添加到通用 Building Blocks.dotx 中。这样,如果我在插件中有引用它们的代码,它们就会一直存在。如果我将其添加到文档模板中,情况也是如此。

这是我的文章可以(并且应该)存储 Building Block 的位置

这是我写的代码用于插入构建块. 使用的代码取决于存储位置。

相关内容