Anche io ho avuto giorni intensi, per impegni familiari ma anche oltre...
Non so come e' organizzato il tuo lavoro, ma questa macro ad esempio attiva una query e poi riporta sul foglio attivo, che viene preventivamente AZZERATO SENZA PREAVVISO nel Range("A1:C100"), la sintesi dei risultati:
- Codice: Seleziona tutto
Sub GetGGLDirections2()
Dim IE As Object, I As Long, J As Long
Dim myTrip As Object, myInTrip As Object
'
myURL = "https://www.google.it/maps/dir/45.9538683,8.5451756/45.9542775,8.5785703/@45.947931,8.5313553,14z" '<<<<
Set IE = CreateObject("InternetExplorer.Application")
'
Range("A1:C100").ClearContents
'Naviga e attendi:
With IE
.navigate myURL
.Visible = True
Do While .Busy: DoEvents: Loop 'Attesa not busy
Do While .readyState <> 4: DoEvents: Loop 'Attesa documento
End With
'
myStart = Timer 'attesa addizionale
Do
DoEvents
If Timer > myStart + 2 Or Timer < myStart Then Exit Do
Loop
rePATH:
AppActivate ("Internet Explorer")
Stop '111
'Ie document ora pronto:
k = Cells(Rows.Count, 1).End(xlUp).Row + 1
'Percorso:
Cells(k, 1) = ">>>> Da: " & IE.document.getelementbyid("directions-searchbox-0").getElementsByTagName("input")(0).Value
Cells(k + 1, 1) = ">>>> A: " & IE.document.getelementbyid("directions-searchbox-1").getElementsByTagName("input")(0).Value
'
'Elementi:
For I = 0 To 10
Set myTrip = Nothing: On Error Resume Next
Set myTrip = IE.document.getelementbyid("section-directions-trip-" & I)
On Error GoTo 0
If myTrip Is Nothing Then Exit For
k = Cells(Rows.Count, 1).End(xlUp).Row + 1
Cells(k, 1) = myTrip.getElementsByClassName("section-directions-trip-title")(0).innerText
Cells(k, 2) = myTrip.getElementsByClassName("section-directions-trip-duration")(0).innerText
On Error Resume Next
Cells(k, 3) = myTrip.getElementsByClassName("section-directions-trip-distance section-directions-trip-secondary-text")(0). _
getElementsByTagName("div")(0).innerText
Cells(k, 4) = myTrip.getElementsByTagName("div")(0).getAttribute("aria-label")
On Error GoTo 0
Next I
rispo = MsgBox("Vuoi fare una nuova ricerca?", vbYesNo)
If rispo = vbYes Then
GoTo rePATH
End If
'Chiusura IE
GoOut:
IE.Quit
Set IE = Nothing
End Sub
Con l'ovvia precisazione che questo "funziona oggi, domani è un altro giorno, si vedrà", perche' google puo' cambiare facilmente la composizione del codice html (magari cosi' vende piu' licenze delle sue API
)
Noterai una istruzione Stop; l'ho inserita per poter eseguire manualmente piu' ricerche, i cui dati saranno elencati nel foglio Attivo (azzerato all'inizio, come detto prima). Questo accoppiato al msgbox con risposta Yes /No.
Per eseguire altre ricerche bastera' quindi modificare i dati di ricerca (partenza, Arrivo, tipo di viaggio) e poi riprendere l'esecuzione della macro dopo lo Stop
Volendo potresti migliorare l'interattivita' con Excel, ad esempio prevedendo di compilare gli "<input>" con valori prelevati da celle Excel e subordinare l'attesa della macro a qualche indicazione sempre inserita nel foglio; vedi dove e' piu' pratico arrivare...
Vedi se puoi farne uso nel tuo progetto.
Ciao