更新分布式Word VBA宏 - 是否可能,您将如何做?

时间:2011-03-18 08:40:16

标签: vba ms-word word-vba word-2003

我有一个在Word 2003中运行的VBA宏。它是一个模块,代码附加到userform,它可以访问大约30个客户端站点。当我第一次推出这个时,我向每个站点发送了一个圆圈,将.dot模板放在30个盒子的每个Word的Word Startup文件夹中,然后使宏显示为工具栏上每个用户的按钮。

所有用户都是互联网连接。

.dot模板的位置因机器而异,因此我认为“安装程序”将无法使用?

我预计宏需要不时改变。有什么方法可以让用户按下按钮让宏自行更新吗?

无论是按下按钮还是自动运行检查更新,我可能需要知道如何确定宏的运行位置(路径),而不需要保存文档,以及如何查找启动文件夹工具的路径&gt ;选项>文件位置,但以编程方式。

2 个答案:

答案 0 :(得分:1)

这可以做到。

  1. 创建2个.dot文件,loader.dot(检查更新)和worker.dot(您正在使用的主宏,并希望能够自动更新)。

  2. 第一个loader.dot应该进入C:\ Program Files \ Microsoft Office \ OFFICE11 \ STARTUP

  3. 这是一个受信任的位置,宏将加载到任何Word文档中。使用AutoExec()子例程确保它在加载单词doc时运行。

    worker.dot可以进入任何固定安装位置,例如C:\ yourapp \ worker.dot

    loader.dot中的逻辑是删除对worker.dot的任何引用(我必须在宏安全设置中启用VBA模型的信任)使用http调用检查更新,如果新版本可用则下载它覆盖worker.dot ,然后从指定worker.dot的文件中添加引用

答案 1 :(得分:0)

我不确定用户按下按钮模型是否理想。

我会研究构建一个“加载器”模板。它的工作是在启动时运行并查找已有模板/宏的更新,并在更改时下载/安装/任何此类文件。然后加载本地安装的任何内容以供使用。

如果更新可用但有人不使用它(或许他们在上传更改之前启动了Word,或者他们处于脱机状态),您还应该考虑是否存在问题。另外,您需要知道人们使用的是什么版本吗?通过HTTP,电子邮件或其他方法(Twitter?)

让您的加载程序报告回来

任何这样的加载器都需要非常稳定(否则你只需要更换目标模板来追逐更换加载器)或者在必要时自行更新。