【发布时间】:2015-05-03 23:35:07
【问题描述】:
在下面的文章中,它展示了如何使用 VBA,创建 CLR 的实例,从而调用/使用/使用 .net COM 对象,而无需注册此类对象。
Side-By-Side COM Interop with C# and VBA
我希望替换此代码:
Dim Host As mscoree.CorRuntimeHost
Set Host = New CorRuntimeHost
与
Set Host = createObject("mscoree.CorRunTimeHost")
我找不到“类”名称。
也就是说,我想后期绑定CLR。有谁知道是否可以使用 VBA CreateObject() 来代替从 VBA 对上述 mscore 的硬引用
VBA->工具中设置的“参考”是
C:\Windows\Microsoft.NET\Framework\v4.0.30319\mscoree.tlb
实际上,我希望通过 CreateObject() 后期绑定使用 .net CLR
【问题讨论】:
-
类名不是
CorRuntimeHost吗?CreateObject("mscoree.CorRunTimeHost")是否将Host设置为Nothing? -
我的猜测是,如果不在注册表中添加对 typelib 的 COM 引用,就无法完成。如果我打电话给
Debug.Print TypeName(Host),它会报告Unknown。 -
您对此的一个很好的破解-我相信您是正确的-注册表中没有类型库-我不能后期绑定。但是,如果 mscoree.tlb 不是托管代码,则有可能!