VBA中.net CLR的后期绑定(Access)
在下面的文章中,它展示了如何使用VBA,创建CLR实例,从而调用/use/consume.net COM对象,而无需注册此类对象 我希望替换此代码:VBA中.net CLR的后期绑定(Access),.net,vba,ms-access,.net,Vba,Ms Access,在下面的文章中,它展示了如何使用VBA,创建CLR实例,从而调用/use/consume.net COM对象,而无需注册此类对象 我希望替换此代码: Dim Host As mscoree.CorRuntimeHost Set Host = New CorRuntimeHost 与 我找不到“类”名称 换句话说,我想延迟绑定CLR。有人知道是否可以使用VBA CreateObject()来代替从VBA到上述mscore的硬引用吗 VBA->tools中设置的“参考”为 C:\Windows\
Dim Host As mscoree.CorRuntimeHost
Set Host = New CorRuntimeHost
与
我找不到“类”名称
换句话说,我想延迟绑定CLR。有人知道是否可以使用VBA CreateObject()来代替从VBA到上述mscore的硬引用吗
VBA->tools中设置的“参考”为
C:\Windows\Microsoft.NET\Framework\v4.0.30319\mscoree.tlb
实际上,我希望通过CreateObject()延迟绑定.net CLR的使用。我相信您可能需要先注册typelib(无法确认ATM,因为我在查找类名之前使用了regtlibv12.exe进行了注册)。类名似乎是“CLRMetaData.CorRunTimeHost”。类名不是
CorRunTimeHost
?CreateObject(“mscoree.CorRunTimeHost”)
是否将Host
设置为Nothing
。如果我调用Debug.Print TypeName(Host)
,它会报告未知
。这是你的一个很好的漏洞-我相信你是正确的-如果注册表中没有typelib-我无法延迟绑定。但是,如果mscoree.tlb不是托管代码,这是可能的!感谢类名-不幸的是CreateObject仍然无法工作-我非常同意并怀疑您是正确的-问题是这样一个对象需要regasm/codebase才能工作。当然,避免在锁定的机器上注册任何东西是这篇文章的主要原因。有趣的是,Access VBA中的引用集可以工作,但允许CreateObject则不行。
C:\Windows\Microsoft.NET\Framework\v4.0.30319\mscoree.tlb