Scarico dati da WEB tramite Recupero Dati di Excel.
La macro, creata con il registratore macro, si collega ad un indirizzo WEB del quale è necessario verificare in quale Table sono
i dati di interesse. In questo tipo di scarico sono in Table 2 e questo è verificabile durante la registrazione della macro.
Si procede da menù Dati\Recupera dati\Da altre origini\Da WEB e si inserisce l'indirizzo desiderato.
L'opzione è Carica per scaricare i dati con il filtro già applicato nel foglio di destinazione chiamato Scarico (già presente al lancio della macro).
Per le elaborazioni successive è necessario però cancellare la query di collegamento al WEB ed il foglio dati dove avviene lo scarico dati e smanettando sono riuscito a inserire questo codice:
ActiveWorkbook.Queries.Item("Table 2").Delete
- Codice: Seleziona tutto
Sub Scarico_dati_dal_WEB()
'Scarica i dati dal WEB
'Dalla Table 2 di Yahoo Finance scarica cinque mesi di dati
Application.DisplayAlerts = False
'Cancella foglio di scarico dati e la query
ActiveWorkbook.Queries.Item("Table 2").Delete
Sheets("Scarico").Select
ActiveWindow.SelectedSheets.Delete
'Scarica i dati dal web
ActiveWorkbook.Queries.Add Name:="Table 2", Formula:= _
"let" & Chr(13) & "" & Chr(10) & " Origine = Web.Page(Web.Contents(""https://it.finance.yahoo.com/quote/ENEL.MI/history?p=ENEL.MI""))," & Chr(13) & "" & Chr(10) & " Data2 = Origine{2}[Data]," & Chr(13) & "" & Chr(10) & " #""Modificato tipo"" = Table.TransformColumnTypes(Data2,{{""Data"", type date}, {""Aperto"", type text}, {""Alto"", type text}, {""Basso"", type text}, {""Chiusura*"", type text}, {""Chiusura aggiustata**"", type text}, {""" & _
"Volume"", type text}})" & Chr(13) & "" & Chr(10) & "in" & Chr(13) & "" & Chr(10) & " #""Modificato tipo"""
ActiveWorkbook.Worksheets.Add
With ActiveSheet.ListObjects.Add(SourceType:=0, Source:= _
"OLEDB;Provider=Microsoft.Mashup.OleDb.1;Data Source=$Workbook$;Location=""Table 2"";Extended Properties=""""" _
, Destination:=Range("$A$1")).QueryTable
.CommandType = xlCmdSql
.CommandText = Array("SELECT * FROM [Table 2]")
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = True
.ListObject.DisplayName = "Table_2"
.Refresh BackgroundQuery:=False
End With
'Rinomina foglio di scarico dati
ActiveSheet.Activate
ActiveSheet.Name = "Scarico"
Application.DisplayAlerts = True
End Sub