Basta, non voglio piu' sentir parlare di query web
Visto il comportamento instabile al massimo ho riciclato la macro suggerita tempo fa ad altro utente per leggere le tabelle da pagine web (vedi
viewtopic.php?t=100441#p581076), inserendola in un ciclo per leggere le N pagine una dopo l' altra.
Il codice e' questo:
- Codice: Seleziona tutto
Sub Macro2()
'
Set IE = CreateObject("InternetExplorer.Application")
'
myUrlRoot = "https://accessoprogrammato.cineca.it/2014/studenti/graduatoria.php?&statica=1&pagina=" ' 2&user=STU18MP40702"
'
'Leggi le tabelle su FoglioXX
'Sheets("FOGLIO3").Select <<< Vedi testo; sceglie il Foglio
'Cells.ClearContents '<<< Vedi testo; azzera foglio (1, alternativo a 2)
I = Cells(Rows.Count, 1).End(xlUp).Row + 1 '<<< Vedi testo; continua elenco (2, alternativo a 1)
For II = 1 To 10
myUrl = myUrlRoot & II & "&user=STU18MP40702"
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 + 0.5 Or Timer < myStart Then Exit Do
Loop
If II = 1 Then Stop 'Per eseguire eventuale login
Set myColl = IE.document.getElementsByTagName("TABLE")
For Each myItm In myColl
For Each trtr In myItm.Rows
For Each tdtd In trtr.Cells
Cells(I + 1, J + 1) = tdtd.innertext
' Cells(I + 1, 1).Select
J = J + 1
Next tdtd
I = I + 1: J = 0
Next trtr
I = I + 1
Next myItm
Cells(I + 1, 1).Select
Next II
'
IEQuit:
'Chiusura IE
IE.Quit
Set IE = Nothing
End Sub
Elimina il codice precedente e sostituiscilo con questo.
Poi lancia la macro cosi' come e'.
La macro apre una sessione InternetExplorer, prova a leggere la prima pagina e si ferma.
Se l' accesso fallisce perche' e' necessario loggarsi, loggati al sito dalla pagina del login e poi vai manualmente alla prima pagina di dati (io ho incollato l' url che hai dato tu). Con pagina 1 visualizzata, torna sull' editor della macro e premi il tasto F5 (continua); a questo punto le altre pagine (10, per effetto di quel For II = 1 To 10) dovrebbero essere lette in sequenza e il contenuto accodato sul foglio di lavoro.
Se rilanci la macro, essa si ferma di nuovo all' inizio, ma probabilmente non c' e' bisogno di rieseguire il login (la pagina 1 viene visualizzata correttamente) e bastera' premere F5 per continuare.
Se funziona probabilmente vorrai leggere tutte le 368 pagine; per questo ti bastera' modificare il ciclo in For II = 1 To 370, lanciare la macro e dare tempo al tempo...
Il foglio su cui si lavora VIENE AZZERATO ALL' INIZIO SENZA PREAVVISO; ci sono, verso l' inizio del codice, alcune istruzioni marcate <<< che consentono di scegliere quale foglio utilizzare (al momento si usa il foglio "corrente"), se azzerare il foglio o se invece continuare un elenco gia' importato.
Buon collaudo...
PS: ho ricevuto i tuoi numerosi messaggi.