通过 VBA 宏中的输入参数调用 asmx Web 服务,但缺少 SoapClient30

Calling asmx web service by input parameters from VBA macro but SoapClient30 is missing

提问人:hakohako 提问时间:11/7/2023 最后编辑:braXhakohako 更新时间:11/7/2023 访问量:29

问:

我有一个带有宏的 excel 文件,该宏调用了 asmx 服务。宏和服务是 15 年前写的。Excel 宏调用 asmx 服务,服务将数据从 excel 单元格上传到 db。

15年前,Web服务调用是这样的:

Public soapService As SoapClient30
Set soapService = New SoapClient30
soapService.ClientProperty("ConnectorProgID") = "MSSOAP.WinInetConnector30"
soapService.MSSoapInit "http://blabla.com/ServiceName/Import.asmx?WSDL"
Call Module1.Add2DB_WebService

Add2DB_WebService是这样的:

strResp = soapService.upload(inputParameter1, inputParameter2, inputParameter3, inputParameter4)

该宏工作完美,但由于我们使用 Office Excel 2016,因此每次使用该 excel 文件的 PC 都应该包含旧的 dll,因为 SoapClient30 多年来缺少引用。因此,我们的IT部门将SoapClient30 dll放到那台PC上,excel可以正常运行。

现在,我必须使excel宏在Excel 2016上正常运行。

我无法访问和更改 asmx 服务。我无法编写新的 API 等。我必须调用完全相同的 asmx 服务。

由于缺少 SoapClient30,它总是说“找不到项目或库”

如何使该宏在Excel 2016中运行?SoapClient30 的任何可能的替代品?

我很想请你帮忙。

我尝试在没有 SoapClient30 的情况下从 VBA 宏调用 asmx 服务,但无法成功。

Excel VBA Web 服务 ASMX SOAP 客户端

评论

0赞 Tim Williams 11/8/2023
您需要查看 Web 服务的文档,并在 VBA 中构建 SOAP XML 信封。这比使用SOAP库更棘手,但绝对有可能。例如,请参阅: stackoverflow.com/questions/57146366/soap-request-from-vba 如果可以使用库跟踪工作簿中的 HTTP 调用(可以尝试 Fiddler 或类似内容),则可以查看需要复制的内容。
0赞 hakohako 11/18/2023
谢谢蒂姆。正如我在SoapUI示例中看到的那样,我创建了信封字符串,我成功了。
0赞 Tim Williams 11/18/2023
很高兴听到你弄清楚了。

答: 暂无答案