そのため、VBA でジオコーディング スクリプトを完成させようとしていましたが、ベータ テスト中に、ほとんどの住所のデータを抽出できず、その他のデータは完全に機能することに気付きました。コードは次のとおりです。
Sub newReadXMLData(link As String)
Dim odc As DOMDocument
Dim lat As String
Dim lng As String
Dim location As IXMLDOMElement
Dim locationPath As String
Dim i As Integer
Set odc = New MSXML2.DOMDocument
odc.async = False
odc.Load (link)
locationPath = "GeocodeResponse/result/geometry[location_type='ROOFTOP']/location"
Set location = odc.SelectSingleNode(locationPath)
lat = GetTextValue(location, "./lat")
lng = GetTextValue(location, "./lng")
Debug.Print lat & "; " & lng
End Sub
Function GetTextValue(node As IXMLDOMElement, Optional xpath As String = "") As String
Dim selectedNode As IXMLDOMElement
If xpath <> "" And Not node Is Nothing Then
Set selectedNode = node.SelectSingleNode(xpath)
Else
Set selectedNode = node
End If
If selectedNode Is Nothing Then
GetTextValue = ""
Else
GetTextValue = Trim(selectedNode.Text)
End If
End Function
スクリプトは、eg に対しては正しい値を返しますhttp://maps.googleapis.com/maps/api/geocode/xml?address=1+Infinite+Loop,+Cupertino,+Santa+Clara,+California+95014&sensor=false
が、eg に対しては何も返しませんhttp://maps.googleapis.com/maps/api/geocode/xml?address=BAGIENNA+13,+88-100+INOWROCŁAW&sensor=false
。その理由を説明できる人はいますか?