Domanda

In un modulo VBA in Excel 2007, è possibile chiamare un servizio Web? In tal caso, qualche frammento di codice? Come aggiungerei il riferimento web?

È stato utile?

Soluzione

Sì, puoi!

Ho lavorato su un progetto che lo ha fatto (vedi commento). Sfortunatamente nessun esempio di codice da quello, ma google ha rivelato questi:

Come integrare i dati di diversi servizi Web utilizzando Excel e VBA

PASSO PASSO: utilizzo dei servizi Web tramite VBA (Excel o Word)

VBA: consuma servizi web di sapone

Altri suggerimenti

Ecco una panoramica di MS:

Consumo di servizi Web in Excel 2007

Per una risposta aggiornata, consultare questa domanda SO:

chiamando il servizio web usando il codice VBA in Excel 2010

Tuttavia, entrambi i thread dovrebbero essere uniti.

In Microsoft Excel Office 2007 prova a installare "Strumento di riferimento del servizio Web" collegare. E usa WSDL e aggiungi i servizi web. E usa il seguente codice nel modulo per recuperare i dati necessari dal servizio 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
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top