【问题标题】:Updating distributed Word VBA macros - is it possible, how would you do it?更新分布式 Word VBA 宏 - 有可能吗,你会怎么做?
【发布时间】:2012-07-25 21:47:02
【问题描述】:

我有一个在 Word 2003 中运行的 VBA 宏。它是一个模块和附加到用户窗体的代码,它可以访问大约 30 个客户端站点。当我第一次推出此功能时,我派人到每个站点将一个 .dot 模板放置在 30 个框的每个框的 Word Startup 文件夹中,然后使宏在每个用户的工具栏上显示为一个按钮。

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

.dot 模板的位置因机器而异,所以我想“安装程序”会失效吗?

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

无论是它的按钮还是自动运行检查更新,我大概需要知道如何确定宏从哪里运行(路径)而不必保存文档,以及如何找到启动文件夹工具的路径>options>文件位置,但以编程方式。

【问题讨论】:

    标签: vba ms-word word-2003


    【解决方案1】:

    这是可以做到的。

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

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

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

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

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

    【讨论】:

      【解决方案2】:

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

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

      您还应该考虑是否有更新可用但有人不使用它(也许他们在上载更改之前启动了 Word,或者他们处于脱机状态)。另外,您是否需要知道人们使用的是什么版本?让您的加载程序通过 HTTP、电子邮件或其他方法(Twitter?)进行报告。

      任何这样的加载器都需要非常稳定(否则您只需将追逐替换目标模板替换为追逐替换加载器即可)或能够在必要时自行更新。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-17
        • 2010-09-26
        • 1970-01-01
        相关资源
        最近更新 更多