qui di seguito il codice per lo scarico dati da Yahoo Finance, di cui si parlò tempo fa con Anthony e con altri. Da Yahoo non riesco a scaricare il file dati delle quotazioni in automatico da file excel, infatti questo codice purtroppo non arriva più allo scarico del file. Ho IE 11. E neanche manualmente, cioè non c'è più il pulsante scarico dati.
Ma oggi per caso ho verificato che usando il browser Google è possibile. Ma questo codice lavorava da Internet Explorer. La domanda allora è la seguente: è possibile adattare questo codice per scaricare i dati di Yahoo Finance usando Google anzichè IE? Si può trovare qualche spunto? Ho provato a lavorarci un pò ma senza riuscirci e a cercare qui e su web ma senza risultato.
Grazie ;o)
Se ne parlò il dal 02/10/2017 a questo link:
viewtopic.php?f=26&t=108903
- Codice: Seleziona tutto
Dim IE As Object 'RIGOROSAMENTE IN TESTA AL MODULO
'Scarica i dati di un anno da Yahoo Finanza su una file csv
Sub mMain()
Dim aColl As Object, bColl As Object, myTIT As String, myPath As String
'
'myTIT = "ENEL" '<<< Il titolo, senza ".MI"
Sheets("Dati").Select
If Range("A1").Value = "" Then Exit Sub
myTIT = Range("A1").Value
'myPath = "C:\PROVA"
Call ApriYF(myTIT)
Set aColl = IE.document.getElementById("Col1-1-HistoricalDataTable-Proxy") '.getElementsByTagName("input")
myWait (2)
mlink0 = IE.document.getElementsByClassName("Fl(end) Pos(r) T(-6px)")(0).getElementsByTagName("a")(0).href
'
'aColl.getElementsByTagName("input")(0).Click
myWait (0.2)
'
Set bColl = IE.document.getElementsByClassName("P(5px) W(37px) H(15px) Fl(start) Mb(5px) Cur(p) Bdbc($c-fuji-blue-1-a):h Bdbs(s) Bdbw(3px) Bdbc(t)")
'bColl(bColl.Length - 1).Click 'Max
myWait (0.2)
'
'IE.document.getElementsByClassName(" Bgc($c-fuji-blue-1-b) Bdrs(3px) Px(20px) Miw(100px) Whs(nw) Fz(s) Fw(500) C(white) Bgc($actionBlueHover):h Bd(0) D(ib) Cur(p) Td(n) Py(9px) Miw(80px)! Fl(start)")(0).Click 'Finito
myWait (0.2)
'
IE.document.getElementsByClassName(" Bgc($c-fuji-blue-1-b) Bdrs(3px) Px(20px) Miw(100px) Whs(nw) Fz(s) Fw(500) C(white) Bgc($actionBlueHover):h Bd(0) D(ib) Cur(p) Td(n) Py(9px) Fl(end)")(0).Click 'Applica
myWait (0.2)
mlink = mlink0
On Error Resume Next
mytim = Timer
Do
mlink = IE.document.getElementsByClassName("Fl(end) Pos(r) T(-6px)")(0).getElementsByTagName("a")(0).href
If Mid(mlink, InStr(1, mlink, "?period1", vbTextCompare) + 8, 7) <> _
Mid(mlink0, InStr(1, mlink0, "?period1", vbTextCompare) + 8, 7) Then Exit Do
If Timer > (mytim + 15) Then Exit Do
Loop
'Debug.Print Format(Timer - mytim, "0.00")
'Debug.Print 1, mlink0
'Debug.Print 2, mlink
On Error GoTo 0
myWait (0.5)
'GoTo impF
IE.navigate mlink
myWait (0.2)
mytim = Timer
Do While IE.Busy
DoEvents: If Timer > (mytim + 10) Then Exit Do:
Loop 'Attesa not busy
Do While IE.readyState <> 4
DoEvents: If Timer > (mytim + 30) Then Exit Do
Loop 'Attesa documento
On Error Resume Next
IE.Quit
Set IE = Nothing
End Sub
Sub ApriYF(ByVal myID As String, Optional mySt As Long = 0)
'
bURL = "https://it.finance.yahoo.com/quote/###.MI/history?p=###"
'Set IE = Nothing
If IE Is Nothing Then Set IE = CreateObject("InternetExplorer.Application")
'
With IE
.navigate Replace(bURL, "###", myID, , , vbTextCompare)
.Visible = True
Do While .Busy: DoEvents: Loop 'Attesa not busy
Do While .readyState <> 4: DoEvents: Loop 'Attesa documento
End With
If mySt > 0 Then Stop
End Sub
Private Sub myWait(ByVal WSec As Single, Optional ByVal TOut As Single = 10)
'Attende WSec secondi (o il doppio se mezzanotte)
Dim lTim As Single
'
lTim = Timer
Do
DoEvents
If Timer > (lTim + WSec) Then Exit Do
DoEvents
If Timer < lTim And Timer > WSec Then Exit Do
Loop
End Sub