在现有工作簿中存储Excel加载项

时间:2014-08-13 12:30:29

标签: c# excel deployment excel-addins

我目前正在使用Excel-DNA库开发Excel加载项。遗憾的是,我需要以某种方式将加载项序列化到工作簿中,因此如果打开工作簿,可能会执行加载项代码。

之前,我使用过大量运行的VBA和Excel宏,我可以序列化宏并上传工作簿。软件将数据放入其中并传送已编辑的工作簿,我只需打开工作簿即可执行宏。

我尝试使用加载项(例如加载加载项并保存工作簿)但是没有用,加载项似乎根本没有保存。是否还有其他机会将加载项序列化到工作簿中,以便刚拿到工作簿的人可以执行加载项代码?

3 个答案:

答案 0 :(得分:3)

您可以在Excel工作簿中包含将安装加载项的代码(如果尚未安装)。如果您只想在工作簿打开时安装加载项,也可以让它在关闭时卸载加载项。

查看JKP的名称管理器,特别是安装程序名称管理器文件中的代码。

http://www.jkp-ads.com/OfficeMarketPlaceNM-EN.asp

它找到加载项,假定加载项位于相同的路径和安装文件中,并将其复制到UserLibrary,这是加载项的默认路径。然后它将Addin.Installed属性设置为True。

JKP的插件是本机Excel插件,而不是Excel DNA插件,因此可能存在一些差异(我不知道它们是什么)。但您可能必须处理Application.COMAddins而不是Application.Addins。

答案 1 :(得分:1)

我理解加载项的方式,它们分别以一种他们不能与工作簿绑定在一起的方式。我理解它们的方式(并且在这一点上使用它们)是因为缺乏一个更好的术语,一个奇怪的迷你程序'它位于Excel本身,而不是在工作簿中 - 您安装它,它可以访问更多的PC资源,加载项甚至可以登陆Windows程序列表,与VBA宏不同。

加载项解决了很多问题,但在此过程中创建了一个新问题。即使您构建了一个在启动时已经达到要安装的插件的进程,我认为仍然需要重新启动Excel才能从应用程序中访问,这将令人沮丧。在我看来,加载项部署仍然相当笨重。

答案 2 :(得分:1)

在我工作的地方,我们有一个部署过程来提供一个开始菜单条目,该条目将打开excel和正确版本的xll。

我从未听说有人将插件嵌入工作簿中。但是您可以执行相反的操作,您的插件可以与XLA结合使用,或者您可以创建一个Addin菜单,其中包含用户打开特定版本工作簿的条目。这将工作簿与特定版本的插件绑定,而不是像您要求的那样,但它可能对您的用途有用。您可以使用网络驱动器进行基本实施。

通过反转逻辑可以实现相同的结果。然而,就创造这种基础设施的人力而言,这是一个代价高昂的解决方案。