2009-01-23 27 views
22

在Excel 2007中的VBA模塊中,是否可以調用Web服務?如果是這樣,任何代碼片段?我將如何添加Web引用?在excel中調用Web服務

+1

我知道這是可能的,因爲我曾經參與過一個項目。不幸的是,我只在Web服務部分工作,並且在我的盤子上有太多的東西可以探索Excel代碼。我會盡力找出如何。有可能的。 – Mostlyharmless 2009-01-23 22:51:59

+0

你可能會覺得這很有用:http://stackoverflow.com/questions/3521876/calling-web-service-using-vba-code-in-excel-2010 – SAL 2012-07-22 20:34:50

回答

1

在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