Questa non l' avevo proprio vista, probabilmente e' stata spostata da altra sezione e si e' trovata subito in coda ad altre discussioni piu' recenti...
Comunque non puoi importare questi dati con una Query Web, perche' e' necessaria una interazione che lì non e' consentita.
Lo puoi fare con questa macro, che importa sul foglio REALTIME (che deve gia' esistere nel tuo file Excel e che sara' AZZERATO SENZA PREAVVISO all' avvio della macro) tutte le tabelle presenti sul sito, dopo aver impostato la scelta su 500 righe.
Il codice:
- Codice: Seleziona tutto
Sub Morningstar()
'by Anthony, vedi http://www.pc-facile.com/forum/viewtopic.php?f=26&t=104459
Dim tablId, tablSh, myID, nextUrl As String, urlA As String, urlB As String
Dim I As Long, SecShot As Long
'
SecShot = 0
Set IE = CreateObject("InternetExplorer.Application")
myUrl = "http://tools.morningstar.it/it/stockquickrank/default.aspx?Site=it&universeId=E0EXG%24XMIL&LanguageId=it-IT" '<<<<
'
With IE
.navigate myUrl
.Visible = True
End With
reURL:
Do While IE.Busy: DoEvents: Loop 'Attesa not busy
Do While IE.readyState <> 4: DoEvents: Loop 'Attesa documento
'
If SecShot = 0 Then
Set myColl = IE.document.getelementsbytagname("select")(3)
myColl.Value = 500
myColl.fireevent ("onchange")
'
myStart = Timer 'attesa addizionale
Do
DoEvents: If Timer > myStart + 3 Or Timer < myStart Then Exit Do
Loop
SecShot = 1
End If
If SecShot = 1 Then SecShot = 2: GoTo reURL
'Leggi le tabelle, sul foglio Attivo
Sheets("REALTIME").Select
ActiveSheet.Cells.Clear
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
J = J + 1
Next tdtd
I = I + 1: J = 0
Next trtr
I = I + 1
Next myItm
MsgBox ("Completato")
'
'Stop
'Chiusura IE
IE.Quit
Set IE = Nothing
End Sub
Poiche' si basa sull' analisi del sorgente html del sito non c'e' nessuna garanzia che quel che eventualmente funziona oggi funzionera' ancora la prossima settimana...
Ciao