如何编写用于VBA Excel的C#UDF的安装程序

基本上,我知道如何在C#中为VBA编写用户定义的函数( 这里 )我想写一个安装程序,它将执行必要的操作,以便在任何Excel文档中自动激活和引用我的* .tlb。 有关registry项或设置的任何信息将会有所帮助

编辑:以下我生成一个MyPj.tbl和一个MyPj.dll(感谢msbuild)。

[InterfaceType(ComInterfaceType.InterfaceIsDual)] [Guid("afb62cb2-dfa8-4f0f-980b-25f96ad93b92")] public interface IGreeting { string SayHelloWorld { get; } } [ClassInterface(ClassInterfaceType.AutoDual)] [Guid("8cd91f78-4e62-4a12-95e0-df82699d4d75")] [ProgId("TestDll.Test")] public class Greeting : IGreeting { public string SayHelloWorld { get { return "Hello, World! "; } } } 

通过将生成的.tbl添加到我在Excel中的项目(工具>参考…>浏览),我可以访问Excel VBMacro中的MyPj.Greeting

 Sub Test() Dim greeter as New MyPj.Greeting MsgBox greeter.SayHelloWorld() End Sub 

重点是我不想通过“工具>参考…>浏览”。 我需要做一个安装程序,它会自动在Excel中提供“SayHelloWorld”

我不知道你是什么意思,自动引用types库到任何Excel文档。 从来没有尝试过,也不认为自动引用自定义组件的好主意。

您可以使用Visual Studio创build安装程序,但是再次运行安装程序大多需要提升权限。

看一下Excel-DNA,它是一个了不起的工具/框架,它允许你把所有的dll + tlbs包装在一个.XLL中,然后你可以在你的任何工作簿中使用这个XLL。

看到这个: http : //ashuvba.blogspot.com/2015/07/developing-registration-free-com-server.html

一旦你打包了XLL,你可以通过File--> Options ---> Add-ins将引用永久地设置在Excel中