自定义构建块模板不会可靠加载

时间:2013-12-09 20:10:31

标签: vba ms-word ms-office word-vba word-2007

我的一系列特定于文档的宏和快速构建块正在增长!我开始与员工分享这些内容,我希望能够只设置一次远程计算机。从那以后,更新网络路径上的集合。并且因为每台计算机都在寻找共享位置,所以每个人都应该使用最新的宏和快速部件等。

因此。我所知道的:
- 所需的宏保存在单独的模块中,可以共享/导出 - 宏本身偶尔会在我的计算机上引用本地路径 - 我需要引用具有通用代码的路径或使用Environ变量 - 构建块和快速部分保存在单独的模板文件中(当前位于Appdata中,以及默认的构建块文件)。

我不知道的事:
a)如何将Word指向网络路径以从自定义宏文件中检索宏。 (我是否只需要在每台PC上的每个重要更新中导入一个新的宏文件?)
b)从 CUSTOM 路径加载构建块项目的最佳方法是什么?

我的自定义BuildingBlock模板文件有时无法正确加载:

Dim objTemplate As Template
Dim objBB As BuildingBlock    

'set template to store the building block   
 Set objTemplate = Templates("C:\Users\[USER]\AppData\Roaming\Microsoft_
\Document Building Blocks\1033\CustomBBlocks.dotx")

Set objBB = objTemplate.BuildingBlockEntries.Item("[EntryName]")

我知道这是因为代码会出现'CollectionDoesntExist'错误,除非我在第一次运行代码之前单击Quickparts库。所以就像Word不能打开模板文件并查看内部,除非我先从UI做到这一点。

当然,如果我首先从UI打开Quickparts库,在运行我的代码之前,Word似乎想出来了,并插入正确的Bui​​lding Block条目而没有任何问题。

1 个答案:

答案 0 :(得分:0)

过去我曾经开发过一款可以为Word构建块的产品。有些网站有数百个模板,可能有1.000个元素(参见Composition)。我们采取的方法是成功的,并且是不同的。

您正在尝试跨大量工作站部署软件元素(宏)。您可以尝试使用Microsoft Word和Windows的可能性来使其工作,但是当事情发生变化时,它会对问题敏感。例如,切换到Office 2013,将域拆分为两个,在没有VPN的情况下在家工作等等。

选项1 - DIY部署:最好将宏和其他内容放在网页,网络服务或类似内容之后。在每个工作站上部署一个通用程序,该程序可以提取所有内容并在本地部署它。您可能希望将一些参数移交给被调用的网页以限制数据量。您可能希望在本地缓存内容。

选项2 - 使用ClickOnce:编写clickonce部署脚本,包含必要的引用并将其放在共享网络驱动器或http地址上。 ClickOnce在找到新版本时自动升级您的软件。它甚至可以在互联网上运行。当没有新版本时,它什么都不做。

选项3 - 数据库:将元素集中放在数据库中,允许最终用户通过表单更改构建块。让Microsoft Word与ClickOnce程序结合使用。

对于作文,我们使用了选项2和3。