VBA 无法创建新的 CXMLHTTPHandler

VBA cannot create new CXMLHTTPHandler

由于某些宏在 Excel 2013 年无法正常工作而在 2010 年工作正常时,我目前正在处理后期绑定。显然,2010 年使用 14.0 对象库,而 2013 年使用 15.0.

 Dim myHttpRequest As Object
 Dim myHttpHandler as Object

 Set myHttpRequest = CreateObject("MSXML2.XMLHTTP")
 Set myHttpHandler = CreateObject("CXMLHTTPHandler")

这会产生 ActiveX 无法创建对象错误。我花了一天多的时间研究这个。

是否必须添加某种资源才能使这些对象工作? Excel 的 15.0 对象库中是否存在这些对象?

我完全不知道该怎么做,因为这通常有效。

我强烈怀疑,看这个posthttp://dailydoseofexcel.com/archives/2006/10/09/async-xmlhttp-calls/

您正在处理用户定义的 class。如果是这种情况,您需要复制 class,按照 link 中概述的步骤操作,然后简单地创建 class 的新实例,而无需后期绑定不涉及图书馆。

如果早期绑定引用了其他库,则另一个步骤是根据需要将 class 中的代码转换为后期绑定。

据此 link:

Dim MyXmlHttpHandler As CXMLHTTPHandler

' Create an instance of the wrapper class.
Set MyXmlHttpHandler = New CXMLHTTPHandler

引用 link 的附加步骤是:

  1. CXMLHTTPHandler class 导出并删除到已知目录
  2. 用记事本打开那个文件
  3. 找到OnReadyStateChange子,在签名后面加上这段文字:Attribute OnReadyStateChange.VB_UserMemId = 0
  4. 保存、关闭并重新导入 class 模块到项目中