Excel Vba Lösung Google Maps
Ort Strasse Gemeinde …
München Stachus München
etwa so…
jetzt möchte ich für diese Straße die LON/LAT ermitteln.
http://www.getlatlon.com/
Hallo Lietz,
teste mal aus was da die Seite als Trennzeichen akzeptiert.
Also ob
Frankfurt Müllerstraße 45
oder auch
Frankfurt, Müllerstraße 45
funktioniert.
Und, wegen Frankfurt/Oder ist ssicher die PLZ notwendig beim oder anstelle des Ortes.
Angenommen, lassen wir jetzt mal eine Überschriftszeile weg, deine Daten stehen in den Spalten A,B,C,D
Dann schreibe in E1
=A1&" „&B1&“ „&C1&“ „&D1
bzw.
=A1&“,"&B1&","&C1&","&D1
Dann lass das Makro ausführen, es füllt dann F und G mit Lat und Long.
Zum Makrocode selbst, im VB-Editor funktioniert er seltsam, er bleibt hängen bis man die linke Maustaste drückt.
Egal.
Alt+F11, Einfügen Modul, Code dort reinkopieren, VB-Editor schließen.
In Excel kannste z.B. über Alt-F8 das Makro „GoogleMaps“ ausführen lassen.
Oder ihn einem Schaltflächenelement aus Symbolleiste „Formular“ zuweisen.
Danke an Anton für den letzten Schritt im Code.
Gruß
Reinhard
Option Explicit
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
'
Sub GoogleMaps()
Dim IEApp As Object, IEDocument As Object, Zei As Long
Dim wks As Worksheet
Set wks = Worksheets("Tabelle1")
Set IEApp = CreateObject("InternetExplorer.Application")
IEApp.Visible = False
IEApp.Navigate "http://www.getlatlon.com/"
Do: Loop Until IEApp.Busy = False
Do: Loop Until IEApp.Busy = False
Set IEDocument = IEApp.Document
Do: Loop Until IEDocument.ReadyState = "complete"
For Zei = 1 To wks.Cells(Rows.Count, 5).End(xlUp).Row
IEDocument.getElementById("geocodeInput").Value = wks.Cells(Zei, 5)
IEDocument.getElementById("geocodeForm").onsubmit
Sleep 500
Do: Loop Until IEApp.Document.ReadyState = "complete"
With IEApp.Document.getElementById("latlon")
wks.Cells(Zei, 6).Value = Split(.innertext, ",")(0)
wks.Cells(Zei, 7).Value = Mid(Split(.innertext, ",")(1), 2)
End With
Next Zei
IEApp.Quit
Set IEDocument = Nothing
Set IEApp = Nothing
End Sub