Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
VBA中.net CLR的后期绑定(Access)_.net_Vba_Ms Access - Fatal编程技术网

VBA中.net CLR的后期绑定(Access)

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\

在下面的文章中,它展示了如何使用VBA,创建CLR实例,从而调用/use/consume.net COM对象,而无需注册此类对象

我希望替换此代码:

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