Frage

In einem VBA-Modul in Excel 2007 ist es möglich, einen Web-Service anrufen? Wenn ja, werden alle Code-Schnipsel? Wie würde ich die Web-Referenz hinzufügen?

War es hilfreich?

Lösung

Yes You Can!

arbeitete ich an einem Projekt, das das getan hat (siehe Kommentar). Leider diese ergab keine Codebeispiele von diesem einen, aber googeln:

Wie Sie Daten aus mehreren Web-Services integrieren können mit Excel und VBA

Schritt für Schritt: Verwenden von Webdiensten durch VBA (Excel oder Word)

VBA: Verbrauchen Soap Web Services

Andere Tipps

Hier ist eine Übersicht von MS:

Consuming Web Services in Excel 2007

Für eine aktualisierte Antwort sieht diese Frage SO:

Aufruf Web-Service mit VBA-Code in Excel 2010

sollten beide Threads obwohl zusammengefügt werden.

In Microsoft Excel Office 2007 try "Web Service Reference Tool" Plugin installieren. Und die WSDL verwenden und den Web-Service hinzufügen. Und verwenden Sie folgenden Code in dem Modul die notwendigen Daten aus dem Web-Dienst zu holen.

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
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top