Question

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

Était-ce utile?

La solution

Oui, vous le pouvez!

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

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: utiliser les services Web Soap

Autres conseils

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

appeler un service Web à l'aide de code VBA dans Excel 2010

Les deux threads doivent cependant être fusionnés.

Dans Microsoft Excel Office 2007, essayez d’installer l’outil " outil de référence de service Web " brancher. 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 sur le 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
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top