更新Excel加载项的过程?

时间:2009-07-30 06:56:54

标签: excel excel-vba add-in vba

我在其中一个部门中部署了一个Excel 2003加载项,偶尔需要更新。目前发生的是我将新版本从我的机器发布到中心位置,这会更新存储在数据库中的版本号,每次运行时加载项都会检查该版本号,以及是否有更新的版本号找到然后加载项暂停,并显示一条消息,通知用户他们需要更新加载项。

这当前涉及他们运行另一个工作簿,其中包含更改加载项的workbook_open事件。

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

我会在用户的个人.xls中动态创建一些代码以处理转换,但是我无法在用户的计算机中设置“信任访问Visual Basic项目”标志,因此无法进行复制加载项中的代码。

我能从这里看到的唯一方法是有两个加载项,一个用于处理更新,另一个用于实际工作。当我不可避免地需要更新更新加载项时,问题出现了!

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

6 个答案:

答案 0 :(得分:4)

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

  1. 主插件可以更新引导程序
  2. 如果主插件需要更新,它会加载bootstapper,然后使用OnTime调用来调度bootstrap中的bootstrap例程并立即卸载。
  3. 执行ontime调用。
  4. bootstrapper加载主插件,重新启动主插件,卸载自己。
  5. 复杂,但确实有效。

答案 1 :(得分:2)

Dick Kusleika很高兴今天关于管理加载项的博客!

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

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

答案 2 :(得分:0)

我实现类似的一种方式,虽然前一段时间如下:

在公共页面上提供一个名为Update的按钮(如果您使用的话,可能是常见文件),当用户单击该按钮时,它会在网络位置打开xls并将该文件中的代码复制到本地文件并关闭新打开的文件。

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

因为我的用户很少,而且更新数量相当少。如果您想要自动更新,则会阻止您在每次打开文件时检查版本号。

答案 3 :(得分:0)

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

答案 4 :(得分:0)

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

我认为解决方案更新按钮,因为网络不在线时出现问题。

答案 5 :(得分:0)

因为我没有找到任何“工作流程”,所以我将从昨天处理几乎相同的问题时发布经验。 (没有自动更新)

在@Lunatik的dilydoseofexcel.com链接中,查尔斯张贴了他的Addin(可从http://www.decisionmodels.com/downloads.htm#addload下载),这解决了我的情况。

先决条件

任何想要使用远程服务器上的插件的用户都必须添加AddLoaderV2.xla插件。

从Excel中:Developer Tab - Excel Add-ins - Browse - ...\AddLoaderV2.xla - select 'NO' when asked to copy it locally

结构

  • 服务器端文件夹结构
T:\my\remote\folder\SOFTWARE\MSOFFICE\Excel_Add-ins
.
├── AddinLoad.txt
├── AddLoaderV2.xla
└── USER_SonGokussj4
    ├── FinancialFunctions_v0.0.1.xlam
    ├── FinancialFunctions_v0.0.2.xlam
    └── dev_FinancialFunctions_v0.0.3.xlam
  • AddinLoad.txt内容
FinancialFunctions, auto, T:\my\remote\folder\SOFTWARE\MSOFFICE\Excel_Add-ins\USER_SonGokussj4\

注意:文件夹的前缀USER只是我的偏爱,因为我为很多人维护插件。

我的工作流程(更新加载项)

  • 当我想更新FinancialFunctions_v0.0.2.xlam时,我做了一个副本(因为v0.0.2被很多人使用):dev_FinanctialFunction_v0.0.3.xlam
  • 我打开v0.0.3并进行必要的更改
  • 完成后,我将其重命名为FinanctialFunctions_v0.0.3.xlam
  • 我发送了一封电子邮件给我的部门,该新版本可用
  • 现在每个新打开的Excel将auto AddinLoad.txt加载(在v0.0.3中定义)
  • 如果用户不想关闭自己的Excel,则在Addins选项卡中有https://i.imgur.com/H2ru2hV.png,因此用户只需选择要重新加载的加载项

关闭

我想从您的插件中进行一些自动化操作不会花费很多工作,例如“检查是否有新版本,如果有,请调用reload AddLoaderV2插件。”

希望这对某人有帮助。我最大的问题是了解.xlam文件和AddinLoad.txt根名称的命名,以便始终仅加载最新版本。下载他的Addin时有3页的自述文件。

抢救查尔斯!祝你有美好的一天。

现在我必须找到类似于加载PowerPoint加载项的内容...