繁体   English   中英

Regasm 不工作/ActiveX 组件无法创建对象

[英]Regasm is not working / ActiveX component can't create object

我在 Visual Studio 中编写了一个 C# .dll,我想从 excel VBA 调用它。 (我用过这个教程)

在我的开发 PC 上,我在项目属性中设置了“使 COM 可见”、“注册 COM 互操作”和“签署程序集”,一切正常。 dll 由 Visual Studio 自动注册,我可以在 Excel 中的 VBA 窗口 > 工具 > 引用中选择和设置它

现在的用例是我可以在另一台未安装 Visual Studio 的 PC 上使用该 dll 文件。

正如教程和互联网上所说,要走的路是使用命令行工具RegAsm.exe ,我所做的(如果有用:我使用了以下文件夹中的那个: C:\\Windows\\Microsoft.NET\\Framework64\\v4.0.30319\\RegAsm.exe )

注册dll的命令是:

C:\Windows\Microsoft.NET\Framework64\v4.0.30319\RegAsm.exe D:\Debug\DotNetLibrary.dll /tlb /codebase.

这运行没有错误,命令行告诉我类型已正确注册并且 tlb 已导出和注册。

似乎一切正常,并且注册表中还有一个条目 (Computer\\HKEY_CLASSES_ROOT\\TypeLib) 引用了我的 dll,但该库没有像在另一台 PC 上那样显示在 VBA 的“引用”窗口中。

如果我选择了由 RegAsm 手动生成的 tlb,通过单击参考窗口中的浏览,它会被添加到列表中。 但是,如果我随后启动代码,则会收到 ActiveX 组件无法创建对象的错误。

我几天以来一直在检查这个问题,所以如果有人可以帮助我解决它会非常好。

正如@HansPassant 在我的问题下的评论中提到的,简单的解决方案是使用 32 位版本的 regasm(位于 C:\\Windows\\Microsoft.NET\\Framework\\v4.0.30319)这需要完成,因为 Microsoft Office 产品仍然是 32 位。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM