什么';是什么导致VBA Soap服务调用中出现此SoapMapper错误?

什么';是什么导致VBA Soap服务调用中出现此SoapMapper错误?,soap,excel,soap-client,vba,Soap,Excel,Soap Client,Vba,我正试图从Excel2003工作簿中的VBA代码中使用基于Java的SOAP web服务。有两种方法可用。一个检索数据,另一个上载数据。检索数据的服务工作正常。然而,当我们试图上传数据时,我们遇到了一个奇怪的错误,我就是在谷歌上找不到好的信息。错误消息是: Run-time error '-2147221504 (800040000)'; SoapMapper: Putting data into SoapMapper element failed 如果我们试图从.NET应用程序中使用相同的w

我正试图从Excel2003工作簿中的VBA代码中使用基于Java的SOAP web服务。有两种方法可用。一个检索数据,另一个上载数据。检索数据的服务工作正常。然而,当我们试图上传数据时,我们遇到了一个奇怪的错误,我就是在谷歌上找不到好的信息。错误消息是:

Run-time error '-2147221504 (800040000)';
SoapMapper: Putting data into SoapMapper element failed
如果我们试图从.NET应用程序中使用相同的web服务,那么生成的类和方法似乎略有不同。例如,fetch data service调用使用一个
DataContainer
对象,该对象具有一些标识属性来确定要获取的数据。然后返回填充了数据的相同类型的对象

在Web引用工具包生成的VBA类中,fetch和save都使用相同类型的对象。但是在.NET中,save接受一个
SaveDataContainerDetails
对象

所以有几个问题是真的:

  • 有人在VBA工作中见过
    SoapMapper
    错误吗

  • 有没有人见过.NET和VBA从同一个WSDL生成不同的方法签名?是什么原因造成的?我该如何解决

  • 有没有更好的方法从VBA调用SOAP服务,而不是使用Web引用工具包和SOAP工具包


    • 使用VBA、VBSCRIPT、Classic ASP等web服务的最佳方法是使用.NET创建客户端。然后将客户机转换为COM对象。这些旧技术很容易使用它们。

      使用VBA、VBSCRIPT、Classic ASP等的web服务的最佳方法是使用.NET创建客户端。然后将客户机转换为COM对象。这些都很容易被这些较旧的技术所使用。

      我已经解决了这个问题。VBA Soap工具包和Web引用工具包无法处理复杂类型的数组。上面的错误消息有些误导,因为“element”实际上是Soap信封中XML元素的名称。因此,它未能将数据放入名为“element”的元素中。这稍微掩盖了这个问题


      所以我决定将其归结为复杂类型的数组。我还确定,在VBA中制作自己的soap信封要容易得多。所需的XML通常结构良好,不太难创建和/或解析。因此,如果您在VBA中使用Soap工具包或Web引用工具包时遇到问题。。。只是不要用它!:)

      我已经解决了这个问题。VBA Soap工具包和Web引用工具包无法处理复杂类型的数组。上面的错误消息有些误导,因为“element”实际上是Soap信封中XML元素的名称。因此,它未能将数据放入名为“element”的元素中。这稍微掩盖了这个问题


      所以我决定将其归结为复杂类型的数组。我还确定,在VBA中制作自己的soap信封要容易得多。所需的XML通常结构良好,不太难创建和/或解析。因此,如果您在VBA中使用Soap工具包或Web引用工具包时遇到问题。。。只是不要用它!:)

      你能提供一些你认为有用的信息链接吗?此外,这意味着我还必须分发COM dll。正确吗?请参阅,您能否提供一些链接,指向您认为有用的信息?此外,这意味着我还必须分发COM dll。请参阅,要与接受或返回复杂SOAP数据类型的XML Web服务方法交互,可以使用Microsoft XML(MSXML)解析器。或者,您可以使用Microsoft SOAP类型库(mssoap1.dll)中的“低级”SOAP应用程序编程接口(API)。要与接受或返回复杂SOAP数据类型的XML Web服务方法交互,可以使用Microsoft XML(MSXML)解析器。或者,您可以使用Microsoft SOAP类型库(mssoap1.dll)中的“低级”SOAP应用程序编程接口(API)。