1

そのため、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。その理由を説明できる人はいますか?

4

2 に答える 2

2

エンコードエラーの可能性があると思います。ブラウザで両方の文字列が正しく機能するようにしましたが、VBA コードを試すと、2 番目の文字列が返されます ZERO_RESULTSINOWROCŁAWには、VBA で動作しないように見える文字が 1 つあります(Word 2010 で試しました)。

于 2012-11-17T09:43:18.333 に答える
1

Olle Sjögren が正しかったようです。問題は住所の特殊文字が原因でした。単純な文字変換関数がその仕事をします。

于 2012-11-16T16:16:05.927 に答える