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

C# 在现有工作簿中存储Excel加载项,c#,excel,deployment,excel-addins,C#,Excel,Deployment,Excel Addins,我目前正在使用Excel DNA库开发Excel加载项。遗憾的是,我需要以某种方式将外接程序序列化到工作簿中,以便在打开工作簿时,可以执行外接程序的代码 以前,我使用VBA和Excel宏,它们运行得很好,我可以序列化宏并上传工作簿。一个软件将数据放入其中,并交付编辑好的工作簿,我只需打开工作簿,宏就可以执行了 我尝试使用外接程序(例如加载外接程序并保存工作簿),但没有成功,外接程序似乎根本没有保存。是否还有其他机会将外接程序序列化到工作簿中,以便刚获取工作簿的用户可以执行外接程序的代码?我理解外

我目前正在使用Excel DNA库开发Excel加载项。遗憾的是,我需要以某种方式将外接程序序列化到工作簿中,以便在打开工作簿时,可以执行外接程序的代码

以前,我使用VBA和Excel宏,它们运行得很好,我可以序列化宏并上传工作簿。一个软件将数据放入其中,并交付编辑好的工作簿,我只需打开工作簿,宏就可以执行了


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

我理解外接程序的方式是,它们以一种无法与工作簿绑定在一起的方式分开放置。我对它们的理解(到目前为止一直使用它们)是,由于没有更好的术语,一个奇怪的“迷你程序”加载在Excel本身中,而不是在工作簿中-您安装它,它可以访问更多的PC资源,加载项甚至可以进入Windows程序列表,这与VBA宏不同


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

就我理解外接程序的方式而言,它们是分开放置的,无法与工作簿绑定在一起。我对它们的理解(到目前为止一直使用它们)是,由于没有更好的术语,一个奇怪的“迷你程序”加载在Excel本身中,而不是在工作簿中-您安装它,它可以访问更多的PC资源,加载项甚至可以进入Windows程序列表,这与VBA宏不同


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

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

我从未听说过有人在工作簿中嵌入插件。但是您可以做相反的操作,您的AdIn可以与XLA结合,或者您可以创建一个带有用户项的Admin菜单来打开工作簿的特定版本。这会将工作簿绑定到特定版本的加载项,而不是像您要求的那样,但它可能对您的目的有用。Uou可以使用网络驱动器进行基本实现


这将通过颠倒逻辑实现类似的结果。但是,就创建此基础设施的人力而言,这是一个成本高昂的解决方案。

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

我从未听说过有人在工作簿中嵌入插件。但是您可以做相反的操作,您的AdIn可以与XLA结合,或者您可以创建一个带有用户项的Admin菜单来打开工作簿的特定版本。这会将工作簿绑定到特定版本的加载项,而不是像您要求的那样,但它可能对您的目的有用。Uou可以使用网络驱动器进行基本实现


这将通过颠倒逻辑实现类似的结果。但是,就创建此基础结构所需的人力而言,这是一个成本高昂的解决方案。

您可以在Excel工作簿中包含代码,以便在尚未安装外接程序时安装该外接程序。如果您只希望在工作簿打开时安装外接程序,还可以让它在关闭时卸载外接程序

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

它查找外接程序(假定该外接程序与安装文件位于同一路径中),并将其复制到UserLibrary,这是外接程序的默认路径。然后将Addin.Installed属性设置为True


JKP的外接程序是和原生Excel外接程序,而不是Excel DNA外接程序,因此可能存在一些差异(我不知道它们是什么)。但是,您可能需要处理Application.com加载项,而不是Application.Addins。

您可以在Excel工作簿中包含代码,以便安装加载项(如果尚未安装)。如果您只希望在工作簿打开时安装外接程序,还可以让它在关闭时卸载外接程序

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

它查找外接程序(假定该外接程序与安装文件位于同一路径中),并将其复制到UserLibrary,这是外接程序的默认路径。然后将Addin.Installed属性设置为True


JKP的外接程序是和原生Excel外接程序,而不是Excel DNA外接程序,因此可能存在一些差异(我不知道它们是什么)。但是您可能需要处理Application.com而不是Application.Addins。

我认为您不能这样做。外接程序的好处是它将代码与数据分离,但这需要付出更困难的部署代价。能否在安装加载项的工作簿中输入代码?您仍然需要单独的文件,但可能会有更好的用户体验。@DickKusleika将代码放在安装加载项的工作簿中是什么意思?这可能吗?软件以某种方式存储工作簿,至少宏已经存储。我写得很差,让我再试一次。您有两个文件,一个外接程序和一个工作簿,外接程序以某种方式使用或与之交互。您是否可以使用Workbook_Open事件过程来编写有效安装外接程序的注册表项,