制作MS Excel用户定义函数

我正在尝试在C#中为MS Excel创build一个用户定义的函数。

但是无论我尝试什么,当我尝试将外接程序添加到Excel中时,我总是得到臭名昭着的“ 您select的文件不包含新的自动化服务器,或者您没有足够的权限来注册自动化服务器 ”错误。

下面是我从上面的代码和在线示例中进行testing:

// C# using System; using System.Runtime.InteropServices; using Microsoft.Win32; namespace AutomationAddin { [ClassInterface(ClassInterfaceType.AutoDual)] public class MyUdf { public MyUdf() { } public double addMeTest(double x, double y) { return x + y; } [ComRegisterFunctionAttribute] public static void RegisterFunction(Type t) { Microsoft.Win32.Registry.ClassesRoot.CreateSubKey( "CLSID\\{" + t.GUID.ToString().ToUpper() + "}\\Programmable"); } [ComUnregisterFunctionAttribute] public static void UnregisterFunction(Type t) { Microsoft.Win32.Registry.ClassesRoot.DeleteSubKey( "CLSID\\{" + t.GUID.ToString().ToUpper() + "}\\Programmable"); } } } 

我在Excel 2013 x64Excel 2010 x86上使用了MS Visual Studio 2012

解决scheme我发现并尝试没有成功:

  • [ClassInterface(ClassInterfaceType.AutoDual)]如代码所示
  • [ComRegisterFunctionAttribute]和[ComUnregisterFunctionAttribute]如代码所示
  • regasm / codebase也没有做任何事情
  • 打开/closures“注册COM互操作”(VS作为pipe理员在build设时运行)
  • [assembly:ComVisible(true)]设置为true
  • 尝试了不同的networking代码示例
  • 如何获取在VB.NET中编写的Excel的COM服务器安装和注册在自动化服务器列表中?
  • 我也一起尝试了以上所有 – 这里没有运气
  • 在pipe理员模式下执行Excel

所以,请大家,如果你能告诉我我在这里错过了什么,甚至可以告诉我该怎么做才行,我会很感激! 提前致谢!

我会很乐意提供任何额外的信息,如果需要的话。

PS现在还没睡两个晚上,所以我可能会以一种非常愚蠢的方式搞砸了。 如果有人可以testing这个代码,如果它的工作,并告诉我他们的项目设置,它可能会帮助。

你可以试试这个库https://exceldna.codeplex.com ,它简化了很多UDF的创build。