更新Excel加载项的过程?

我有一个Excel 2003加载项部署在我们有时需要更新的部门之一。 目前发生的事情是,我将新版本从我的机器发布到中央位置,这会更新存储在数据库中的版本号,每次运行插件时都会检查插件,如果新版本号被发现,然后加载项暂停,并通知用户他们需要更新加载项。

这目前涉及到他们运行另一个工作簿与一个workbook_open事件,更改加载项。

我想要的是附加检测,一个更新的版本是可用的,静静地安装之前,进行用户的操作。 问题是,卸载现有版本的第一步失败,因为加载项在卸载时,加载项中的任何代码都会立即完成。

我会在用户的personal.xls中创build一些代码来处理转换,但是我无法在用户的计算机上设置“信任访问Visual Basic项目”标志,因此不能在代码中复制代码join。

我从这里可以看到的唯一方法是有两个插件,一个处理更新,一个实际完成工作。 问题来了,当我不可避免地更新更新插件!

其他人可以提出更好的解决scheme吗? 这必须是100%的Excel,没有VSTO等

我们使用一个单独的插件作为引导程序。

  1. 主要的插件可以更新引导程序
  2. 如果主外挂程序需要更新,它将加载引导程序,然后使用OnTime调用来调用引导程序中的引导程序并立即卸载它自己。
  3. ontime呼叫执行。
  4. 引导程序加载主外挂程序,重新启动主外挂程序,卸载自身。

复杂,但它的作品。

Dick Kusleika今天写了关于pipe理加载项的博客很棒!

http://www.dailydoseofexcel.com/archives/2009/07/29/conditionally-load-excel-add-ins/

一些好的build议,可以适用于我的情况。

尽pipe前一段我做了类似的一个方法如下:

在通用页面上提供一个名为“更新”的button(如果使用的是多个,则可能是一个常用文件),当用户单击该button时,会在networking位置打开一个xls,并将该文件中的代码复制到本地文件,并closures新打开的文件。

这样,每当我有更新,我会发一封电子邮件,要求他们在本地更新代码。

它工作,因为我有很less的用户和更新数量相当less。 如果你想要一个自动更新,什么阻止你在文件的每一个打开过程中检查版本号。

使用开箱即用的ClickOnce部署,只要使用它的应用程序(Excel)启动,就会检查加载项版本。 不确定您是否可以以这种方式部署非托pipe代码。

我尝试了一些不同的步骤,如下所示:1.编写一个插件,并将其放在共享驱动器空间2.将项目添加到VBA引用3.您的函数和Excel中使用的macros添加为引用加载每次Excel表加载,新插件和引用刷新。

我chabge解决scheme更新button,因为networking不联机时的问题。