私は実際にVBAでこれを行ったので、私の解決策を紹介します:
Google Earth API を使用します (参照: Earth 1.0 タイプ ライブラリ)。(セルの Tools.Range(rngGeocoderAddress) から) アドレス情報を取得することから始めます。ポイントの KML データを作成し、Google Earth に送信します (おそらく必要ありません)。その後、住所情報で検索を実行します。これにより、Google が結果の場所へのズームを開始します。
ループでは、Google Earth を定期的に監視して、まだ新しい場所にズーム中かどうかを確認しています。動きが止まると、検索結果にズームしたことがわかり、GetPointOnTerrainFromScreenCoords(0,0) を使用して緯度経度を取得できます。
最終結果は、Google Earth を使用して住所をジオコーディングしたことです。
Public Sub LookUpAddress_Click()
Dim GEI As ApplicationGE
Dim PointOnTerrain As PointOnTerrainGE
Dim Search As SearchControllerGE
Dim KMLData As String
Dim row As Long
'Get the row of the location selected to look up'
With ddGeocoderID()
If .listCount <= 1 Then Exit Sub
row = .ListIndex + 1
End With
Set GEI = GEInit()
If GEI Is Nothing Then Exit Sub
KMLData = "<?xml version=""1.0"" encoding=""UTF-8""?>" & _
"<kml xmlns=""http://www.opengis.net/kml/2.2"">" & _
"<Placemark>" & _
"<name>" & ddGeocoderID().List(ddGeocoderID().ListIndex) & "</name>" & _
"<visibility>1</visibility>" & _
"<open>1</open>" & _
"<description>" & "<![CDATA[" & Tools.Range(rngGeocoderDescription) & "]]></description>" & _
"<address>" & Tools.Range(rngGeocoderAddress) & "</address>" & _
"</Placemark>" & _
"</kml>"
GEI.LoadKmlData KMLData
Set Search = GEI.SearchController()
Call Search.Search(Tools.Range(rngGeocoderAddress))
Dim resul As Variant
Set resul = Search.GetResults()
Dim lat As Double, lon As Double, prevlat As Double, prevlon As Double, checkChange As Double
Dim steady As Boolean
steady = False: checkChange = -1
lat = 0: lon = 0: prevlat = -1: prevlon = -1
While Not steady
Set PointOnTerrain = GEI.GetPointOnTerrainFromScreenCoords(0, 0)
lat = PointOnTerrain.Latitude
lon = PointOnTerrain.Longitude
lblGeoedLat().Caption = sigFigs(lat, 8)
lblGeoedLong().Caption = sigFigs(lon, 8)
DoEvents
If (checkChange = 100) Then
If (lat = prevlat And lon = prevlon) Then steady = True
prevlat = lat: prevlon = lon
checkChange = -1
End If
checkChange = checkChange + 1
Sleep 10
Wend
End Sub
UI でどのように動作させるかを示すスクリーンショットを次に示します。
画像 1住所を入力

画像 2 [ジオコード] をクリックすると、コードはズームが停止するまで待機します

画像 3コードは、最終的な緯度/経度、ユーザー クリックの記録を記録します。

コードをループして、プログラムで多くの場所をジオコーディングしようとしました。Google Earth のズーム速度を非常に高速 (ただし、瞬間的ではない) に設定すると、最適に機能します。