如何使.dll可用于C#和Excel VBA

时间:2014-07-04 07:41:33

标签: c# excel-vba dll vba excel

我有一个我想在C#项目和Excel VBA中使用的DLL。我使用regasm.exe注册DLL并创建TLB。我现在能够在VBA中引用它。我的问题是,我需要我的C#应用​​程序仍然无法找到 DLL。我必须在每个C#应用程序的文件夹中添加DLL的副本或.config - 文件才能使用它们。我可以在COM下看到Visual Studio中的引用,但在尝试使用该引用时出错(Active-X相关的东西,如果它很重要,我可以查找它)。

所以我尝试使用gacutil.exe(首先使用regasm.exe取消注册)并在GAC中注册了我的DLL。现在我不需要副本或.config,我的C#应用​​程序再次运行。 Excel VBA仍然需要使用regasm.exe进行注册,但是我只能在使用gacutil.exe后才能添加引用。

这里我的问题:当你想将它用于C#apps和Excel VBA时,如何注册DLL?是否可以同时使用regasm和gacutil而没有任何问题?

2 个答案:

答案 0 :(得分:2)

运行regasm后,您可以使用gacutil /i将程序集安装到GAC中。完成此操作后,使用“浏览”选项卡将对程序集的引用添加到.NET项目中。添加引用后,在项目中找到引用并查看该引用的属性。将“复制本地”更改为“错误”。

在运行时,您的.NET项目将在本地查找程序集,当它找不到它时,将检查GAC。假设您运行gacutil命令,它将在那里找到它。

答案 1 :(得分:2)

一种稍微不同的方法是将您的C#库合并到Excel-DNA .xll加载项中。这允许您在没有注册或需要管理员权限的情况下使库可用于Excel中的VBA,并且相同的加载项可以包括工作表UDF函数,功能区自定义等。

可以在此处找到MikaelKatajamäki通过Excel-DNA将C#库暴露给Excel VBA的详细说明: http://mikejuniperhill.blogspot.com/2014/03/interfacing-c-and-vba-with-exceldna-no.htmlhttp://mikejuniperhill.blogspot.com/2014/03/interfacing-c-and-vba-with-exceldna_16.html