使用 UDF 发布 C# Excel 插件

Posted

技术标签:

【中文标题】使用 UDF 发布 C# Excel 插件【英文标题】:publish C# Excel Addin with UDF 【发布时间】:2017-11-02 13:29:45 【问题描述】:

我在 C# 中使用 Excel 插件,当我发布我的 C# 插件时,我的问题就出现了。

我会解释:

我使用了这个代码:http://csharpramblings.blogspot.fr/2011/09/communicating-between-vsto-and-udfs-in.html

这允许我在我的插件中使用 UDF。而且效果很好! ...在 Visual Studio 2013 中。

当我使用 Visual Studio 启动我的插件时,我会在 Excel 的“COM 插件”中看到我的插件。还有我在 Excel 中的“Excel Addins”中的 UDF。

那么如果: 我在 Visual Studio 的项目中右键单击发布我的插件。 我使用 VS 生成的 setup.exe 安装插件。 我启动 Excel => 我的插件运行良好,但我的 UDF 不起作用。单元格的值为“#NAME?”。

我检查了 COM 插件,我的插件存在。 我签入了 Excel 插件,但没有看到我的 UDF。

所以我使用 RegAsm 注册已发布 DLL 的程序集。 现在我在“Excel 插件”中看到了我的 UDF,但它仍然不起作用。

如果有人有想法可以帮助我,那就太好了!

我使用:Windows 8.1 Pro、Visual Studio Pro 2013、带有 Office365 的 Excel 2016

提前感谢您的宝贵时间。

【问题讨论】:

您是否在 Office 中注册了您的 XLAM? 您的链接似乎无效。获取消息Sorry, the page you were looking for in this blog does not exist. 我更正了链接。对不起。而且我没有 XLAM 文件。我的插件是一个 dll。 【参考方案1】:

我终于找到了解决办法!

我的错误是使用没有任何参数的 Regasm。 现在我使用带有 /codebase 参数的 Regasm,并使用强名称对我的程序集进行了签名。因为 Regasm 文档说:

在注册表中创建一个代码库条目。代码库条目指定 未安装在全局中的程序集的文件路径 程序集缓存。如果您愿意,则不应指定此选项 随后将您要注册的程序集安装到 全局程序集缓存。您指定的 assemblyFile 参数 /codebase 选项必须是强名称程序集。

来源:https://msdn.microsoft.com/fr-fr/library/tzat5yw6(v=vs.110).aspx

现在我在 Excel 中看到了我的 UDF,它们可以工作了。

【讨论】:

以上是关于使用 UDF 发布 C# Excel 插件的主要内容,如果未能解决你的问题,请参考以下文章

Excel UDF 公式不出现

如何以编程方式删除 Excel UDF

MS Excel 2013 的自动化插件

Excel 自动化插件 UDF 无法访问

在 C# 中以编程方式禁用/注销 Excel UDF

ExcelDNA 在运行时动态注册 UDF