在Excel中调用Web服务

在Excel 2007中的VBA模块中,是否可以调用Web服务? 如果是这样,任何代码片段? 我将如何添加Web引用?

是的你可以!

我曾经做过一个这样的项目(见评论)。 不幸的是,没有从那个代码样本,但谷歌search显示这些:

如何使用Excel和VBA集成来自多个Web服务的数据

STEP BY STEP:通过VBA使用Web服务(Excel或Word)

VBA:使用SOAP Web服务

这是来自MS的概述:

在Excel 2007中使用Web服务

有关更新的答案,请参阅此SO问题:

在Excel 2010中使用VBA代码调用Web服务

两个线程都应该合并。

在Microsoft Excel Office 2007中,请尝试安装“Web服务参考工具”插件。 并使用WSDL并添加Web服务。 并使用模块中的以下代码从Web服务中获取必要的数据。

Sub Demo() Dim XDoc As MSXML2.DOMDocument Dim xEmpDetails As MSXML2.IXMLDOMNode Dim xParent As MSXML2.IXMLDOMNode Dim xChild As MSXML2.IXMLDOMNode Dim query As String Dim Col, Row As Integer Dim objWS As New clsws_GlobalWeather Set XDoc = New MSXML2.DOMDocument XDoc.async = False XDoc.validateOnParse = False query = objWS.wsm_GetCitiesByCountry("india") If Not XDoc.LoadXML(query) Then 'strXML is the string with XML' Err.Raise XDoc.parseError.ErrorCode, , XDoc.parseError.reason End If XDoc.LoadXML (query) Set xEmpDetails = XDoc.DocumentElement Set xParent = xEmpDetails.FirstChild Worksheets("Sheet3").Cells(1, 1).Value = "Country" Worksheets("Sheet3").Cells(1, 1).Interior.Color = RGB(65, 105, 225) Worksheets("Sheet3").Cells(1, 2).Value = "City" Worksheets("Sheet3").Cells(1, 2).Interior.Color = RGB(65, 105, 225) Row = 2 Col = 1 For Each xParent In xEmpDetails.ChildNodes For Each xChild In xParent.ChildNodes Worksheets("Sheet3").Cells(Row, Col).Value = xChild.Text Col = Col + 1 Next xChild Row = Row + 1 Col = 1 Next xParent End Sub