La réponse courte est XPath - vaut bien apprendre si vous allez travailler avec tout type de XML
Dans l'éditeur de macros dans Excel, allez dans Outils> Références et ajoutez une référence à « Microsoft XML, v6.0 » maintenant Insertion> Module et ajoutez ce code:
Sub getDistances()
Dim xhrRequest As XMLHTTP60
Dim domDoc As DOMDocument60
Dim ixnlDistanceNodes As IXMLDOMNodeList
Dim ixnNode As IXMLDOMNode
Dim lOutputRow As Long
' Read the data from the website
Set xhrRequest = New XMLHTTP60
xhrRequest.Open "GET", "http://maps.googleapis.com/maps/api/directions/xml?origin=Scoresby&destination=Melborne&sensor=false", False
xhrRequest.send
' Copy the results into a format we can manipulate with XPath
Set domDoc = New DOMDocument60
domDoc.loadXML xhrRequest.responseText
' The important bit: select every node called "value" which is the child of a node called "distance" which is
' in turn the child of a node called "step"
Set ixnlDistanceNodes = domDoc.selectNodes("//step/distance/value")
' Basic stuff to output the distances
lOutputRow = 1
With Worksheets("Sheet1")
.UsedRange.ClearContents
For Each ixnNode In ixnlDistanceNodes
.Cells(lOutputRow, 1).Value = ixnNode.Text
lOutputRow = lOutputRow + 1
Next ixnNode
End With
Set ixnNode = Nothing
Set ixnlDistanceNodes = Nothing
Set domDoc = Nothing
Set xhrRequest = Nothing
End Sub
pour l'étendre aux multiples voyages que vous le feriez simplement boucle à travers les origines requises et destinations, passez chaque paire en tant que paramètres de cette procédure, puis affichez les résultats dans le format de votre choix
Très bel exemple. Juste comme un rappel (et je ne veux pas être un funspoiler): L'utilisation de l'API Google Maps nécessite que vous montriez une carte Google ainsi ("l'API Directions peut seulement être utilisé en conjonction avec l'affichage des résultats sur un Google map ", http://code.google.com/intl/fr/apis/maps/documentation/directions/#Limits) bien que dans cet exemple particulier, je ne vois pas comment cela pourrait être fait de manière utile. Juste sayin. –