Scenario
Vogliamo recuperare il cambio delle principali valute rispetto all'euro sul sito https://www.bancaditalia.it
I cambi sono memorizzati nella pagina https://www.bancaditalia.it/compiti/operazioni-cambi/cambio/cambi_rif_aaaammgg
dove
- aaaa - è l'anno
- mm - è il mese
- gg - è il giorno
L'idea sarà quindi indicare la data da cui recuperare i cambi
Soluzione
Inseriamo la data nella cella B1 nel formato 'aaaammgg. È importare inserire l'apice per indicare ad Excel che stiamo inserendo un testo. Ad esempio vogliamo prendere i cambi di riferimento del 16 ottobre 2024 inseriremo '20241016.

Assegnano a questa cella il nome data_estrazione.

Accediamo ora al sito dei cambi con già una data impostata: ad esempio
https://www.bancaditalia.it/compiti/operazioni-cambi/cambio/cambi_rif_20241016/
Andiamo si Dati > Recupera dati > Da altre origini > Da Web

Inseriamo il sito

A questo punto vengono rilevate le varie tabelle presenti nella pagina web
La prima tabella è quella che ci serve Tabella dei cambi

Confermiamo con Trasforma dati.

Poiché la tabella non ha intestazioni, diamo dei nomi alle colonne: Valuta e Cambio.
Per eliminare la riga del Rublo Russo che non ha quotazione, possiamo usare i filtri sulla seconda colonna.

Il risultato è il seguente

A questo punto possiamo tipizzare la seconda colonna come valuta

Salviamo la query con Chiudi e Carica > Chiudi e carica in

Questo ci da la possibilità di salvare il risultato nello stesso foglio dove abbiamo impostato la data
Faremo quindi click sulla cella A3

Otteniamo il risultato che però non utilizza la data impostata nella cella B1

Lettura della data dalla cella B1
Modifichiamo la query facendo doppio click sulla Tabella dei cambi
Occorre fare una modifica utilizzando il linguaggio M. Per fare questo andiamo in Visualizza > Editor avanzato.

Andiamo a modificare la seconda riga che contiene un riferimento fisso

Il codice diventa il seguente

In pratica inseriamo una riga in cui andiamo a recuperare la data dalla cella B1a cui abbiamo dato il nome data_estrazione
DataRif = Excel.CurrentWorkbook(){[Name="data_estrazione"]}[Content][Column1]{0},
Ora la variabile DataRif contiene la data. La utilizziamo nella seconda riga per costruire l'URL del sito nella variabile URL
URL = "https://www.bancaditalia.it/compiti/operazioni-cambi/cambio/cambi_rif_" & DataRif,
Il questo modo la riga di accesso al sito diventa
Origine = Web.BrowserContents(URL),
Il Codice completo
let
DataRif = Excel.CurrentWorkbook(){[Name="data_estrazione"]}[Content][Column1]{0},
URL = "https://www.bancaditalia.it/compiti/operazioni-cambi/cambio/cambi_rif_" & DataRif,
Origine = Web.BrowserContents(URL),
#"Tabella estratta da HTML" = Html.Table(Origine, {{"Column1", "TABLE[id='cambi'] > * > TR > :nth-child(1)"}, {"Column2", "TABLE[id='cambi'] > * > TR > :nth-child(2)"}}, [RowSelector="TABLE[id='cambi'] > * > TR"]),
#"Rinominate colonne" = Table.RenameColumns(#"Tabella estratta da HTML",{{"Column1", "Valuta"}, {"Column2", "Cambio"}}),
#"Filtrate righe" = Table.SelectRows(#"Rinominate colonne", each ([Cambio] <> "-")),
#"Filtrate righe1" = Table.SelectRows(#"Filtrate righe", each [Valuta] <> null and [Valuta] <> ""),
#"Ordinate righe" = Table.Sort(#"Filtrate righe1",{{"Valuta", Order.Ascending}}),
#"Modificato tipo" = Table.TransformColumnTypes(#"Ordinate righe",{{"Cambio", Currency.Type}})
in
#"Modificato tipo"




