Ecco un file di partenza che fa cio' che ho capito:
https://www.dropbox.com/s/njsb7jaigwxpz ... .xlsm?dl=0La macro da eseguire e' la Sub GetIsinInfo.
Rispetto alle solite macro di automazione tramite IE, il cuore della macro (la parte che realizza la lettura delle tabelle di dettaglio) e' la seguente:
- Codice: Seleziona tutto
For I = 2 To Cells(Rows.Count, 1).End(xlUp).Row
myIsin = Cells(I, 1).Value
myURL = "http://www.borsaitaliana.it/borsa/derivati/ftse-mib-options/dati-completi.html?isin=" & myIsin & "&lang=it"
If Ie Is Nothing Then Set Ie = CreateObject("InternetExplorer.Application")
'
Refr:
With Ie
Debug.Print "------ " & myRetr
.Navigate myURL
.Visible = True
End With
'wait for page...
myRes = ieWaitPage(Ie, 0.5, 40) 'sessione, Stab Time, TimeOut time
'..
'..
'IE Document ora pronto...
Set myColl = Ie.document.getElementsByTagName("TABLE")
If myColl.Length < 4 Then
Cells(I, 2).Value = "Codice non trovato"
SkipCod = True
Else
Cells(I, 2).Value = "Codice trovato, " & Format(Now, "hh:mm:ss")
SkipCod = False
End If
If SkipCod Then GoTo SkipI
'..
'..
For J = 3 To 4
With myColl(J)
For Each TrTr In .Rows
For Each TdTd In TrTr.Cells
Range("B2").Offset(kK, jJ) = TdTd.innertext
jJ = jJ + 1
Next TdTd
kK = kK + 1: jJ = 0
Next TrTr
kK = kK + 1
End With
Next J
Columns("A:E").EntireColumn.AutoFit
SkipI:
kK = 0: jJ = 0
Sheets(myList).Select
Next I
L'elenco va inserito nel foglio Lista (modificabile nel codice; vedi riga marcata <<<), da cella A2 verso il basso; la colonna B sara' usata per scriverci lo stato dell'operazione ("Codice trovato" + hh:mm:ss /"Codice non trovato").
I dati saranno trascritti in fogli aventi nomi pari al codice Isin; se il foglio non e' presente viene creato, ma se e' GIA' PRESENTE allora VIENE AZZERATO COMPLETAMENTE DALLA MACRO SENZA NESSUN PREAVVISO prima di essere popolato con i dati prelevati dalle tabelle web.
Altri fogli presenti sul file non vengono toccati; compreso eventuali fogli con codici Isin precedentemente elaborati.
Se e' necessario spostare il codice su altri file allora bisogna esportare i moduli Anthony1 e Anthony2 (Menu /File /Esporta file...) e poi Importarli nel nuovo file (Menu /File /Importa file...), lasciandoli come sono salvo la personalizzazione della riga marcata <<<.
Il file e il codice non possono essere usati per fini commerciali.
Ciao