web-dev-qa-db-fra.com

Appelez le service Web dans Excel

Dans un module VBA dans Excel 2007, est-il possible d'appeler un service web? Si oui, des extraits de code? Comment ajouter la référence Web?

25
Jeremy

Oui, vous pouvez!

J'ai travaillé sur un projet qui a fait ça (voir commentaire). Malheureusement, aucun échantillon de code de celui-ci, mais googler a révélé ces derniers:

Comment intégrer des données de plusieurs services Web à l'aide d'Excel et de VBA

ÉTAPE PAR ÉTAPE: Consommation de services Web via VBA (Excel ou Word)

VBA: consommer des services Web Soap

23
Mostlyharmless
6
user262136

Pour une réponse mise à jour, voyez cette SO question:

appel du service Web à l'aide du code VBA dans Excel 201

Les deux threads doivent cependant être fusionnés.

3
dgorissen

Dans Microsoft Excel Office 2007, essayez d'installer le plug-in "Web Service Reference Tool". Et utilisez le WSDL et ajoutez les services Web. Et utilisez le code suivant dans le module pour récupérer les données nécessaires à partir du service 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
1
Adnan Shahmir Ahmed