当我试图运行下面的代码时,我得到了一个Run-time error '429': ActiveX component can't create object
错误。
Option Explicit
Private Sub EarlyVsLateBinding()
' References to both the Microsoft Scripting Runtime and Microsoft XML, v6.0
' are active so that early binding is possible
Dim EarlyDictionary As Scripting.Dictionary
Dim LateDictionary As Object
Set LateDictionary = CreateObject("Scripting.Dictionary")
Dim EarlyHTTP As New MSXML2.XMLHTTP60
Dim LateHTTP As Object
Set LateHTTP = CreateObject("MSXML2.XMLHTTP60") ' Error is thrown here
End Sub
我包含了Scripting.Dictionary
的示例,以使自己确信CreateObject
函数没有引起任何问题,并表明早期和后期绑定对于另一个类是有效的。
遗憾的是,我在这个类中遇到的每个示例都使用早期绑定方法,但我需要这段代码的后期绑定方法。另外,用Set LateHTTP = CreateObject("MSXML2.XMLHTTP60")
替换行Set LateHTTP = GetObject(Class:="MSXML2.XMLHTTP60")
也会产生同样的错误。
是什么导致了这个错误?
发布于 2022-02-10 08:16:07
正如@Raymon Wu在问题的评论中指出的,改变了路线
Set LateHTTP = CreateObject("MSXML2.XMLHTTP60")
至
Set LateHTTP = CreateObject("MSXML2.XMLHTTP")
工作过部分。
编辑1
或者,正如@KL-1在注释中指出的那样,将行更改为
Set LateHTTP = CreateObject("MSXML.XMLHTTP.6.0")
也解决了这个问题。
此更改确实使我的问题中的代码无错误地运行。但是,这会导致另一段代码中的另一个错误。
LateHTTP.setRequestHeader bstrHeader:="Content-Type", bstrValue:="application/json"
这是Run-time error '448': Named argument not found
错误。通过移除命名的参数并将行更改为
LateHTTP.setRequestHeader "Content-Type", "application/json"
编辑1
请注意,这两种解决方案都导致了这个Run-time error '448'
。
正如其他人在注释中指出的那样,在绑定类时,在使用早期和晚期时,名称不一定相同。
后期绑定的名称可以在Computer\HKEY_CLASSES_ROOT下的计算机注册表编辑器中找到。
我知道这超出了问题的范围,但我认为这是有关的资料。
https://stackoverflow.com/questions/71061434
复制相似问题