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?
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)
Voici un aperçu de MS:
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.
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