Condividi tramite

powerquery get file

Anonimo
2025-05-21T16:46:14+00:00

Ciao a tutti

avendo capito la powerquery e l'origine del file , chiedo se c'è una funzione, senza coinvolgere vba che possa dire alla powerquery di caricare un determinato file csv che cambia solo nel nome, mantenendo qindi invariate le estrazioni, filtri, funzioni etc etc

ad esempio scrivendo da qualche parte o o dandogli in pasto il colleganmento?

per esempio il 21/05 questo

il 20/05 questo

e cosi via

Grazie

G

Microsoft 365 e Office | Excel | Per il lavoro | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento

Risposta accettata dall'autore della domanda

Anonimo
2025-05-29T05:19:33+00:00

Ciao Giovanni,

nella cella hai già inserito il percorso assoluto (compreso il nome e l'estensione del file) che viene letto nella Query dalla riga di istruzione Filepath.

Quindi in "Origine" devi fare riferimento semplicemente al "passaggio" Filepath in questo modo:

= Csv.Document(File.Contents(Filepath),[Delimiter=";", Columns=43, Encoding=65001, QuoteStyle=QuoteStyle.None])  

A questo punto leggerà il percorso (che da me ovviamente non viene trovato):

ciao

La risposta è stata utile?

1 persona ha trovato utile questa risposta.
0 commenti Nessun commento

8 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2025-05-27T21:07:42+00:00

    StartFragment

    Ok credo aver capito, imposto come origine importazione file e una volta caricato provvedo a modifica.

    Non posso mettere path e filename perche sono sempre dinamici (diversi mesi diversi giorni).

    Quindi ho impostato solo una cella come FilePath, i cui nelle mie intenzioni ci copierà poi il percorso completo:

    allego codice M

    Filepath = Excel.CurrentWorkbook(){[Name="Filepath"]}[Content][Column1]{0}, <br><br> Origine = Csv.Document(File.Contents("&Filepath&.csv"),[Delimiter=";", Columns=43, Encoding=65001, QuoteStyle=QuoteStyle.None]),

    l'editor non mi da nessun errore di sintassi

    ma ho un errore di formato che non riesco a capire

    DataFormat.Error: Il percorso del file specificato deve essere un percorso assoluto valido. <br><br>Dettagli: <br><br> &Filepath&.csv

    la cella è impostata cosi

    Ho sbagliato la sintassi usando un solo intervallo? ma non ho modo di mettere path e filename perche l'albero è strutturato giornalmente.

    il percorso infatti potrebbe cambiare :

    "R:\Filiale\DEPOSIT SOLUTIONS\2025\05\27\DEUBA_AGENT_CUSTOMER_LIST_202505262025.05.27.csv" e cosi via.

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2025-05-22T18:18:12+00:00

    Creare un parametro di Power Query:

    1. Nell'editor di Power Query:
      • Vai alla Home > Gestisci parametri > Nuovo parametro.
      • Assegnagli FilePathun nome, imposta type su Text e usa la formula:
          = Excel.CurrentWorkbook(){[Name="FilePath"]}[Content]{0}[Column1]
        
      • In questo modo viene letto in modo dinamico il valore dall'intervallo denominato.

    Ciao Hoand-D,

    un chiarimento.

    Come fai a far "accettare" una formula al parametro?

    Se si crea un nuovo parametro di tipo "Testo" anche assegnando la formula quanto inserito viene letto come "testo"

    E una query che richiamasse il parametro leggerebbe il testo "=Excel.CurrentWorkbook(){[Name="FilePath"]}[Content]{0}[Column1]" e non il risultato della "formula" (e quindi il percorso inserito nella cella):

    C'è qualcosa che mi sfugge nella creazione del parametro?

    Grazie per l'eventuale risposta.

    ciao

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Eleuterio Tedeschi 18,590 Punti di reputazione Moderatore volontario
    2025-05-22T05:57:09+00:00

    Ciao Giovanni,

    nel continuare a ricordarti che è necessario chiudere le discussioni contrassegnando i post utili, per quanto ti occorre, semplificando quanto consigliato da Hoang-D (ciao) normalmente hai una situazione di questo tipo:
    let

    Origine = Csv.Document(File.Contents("nomefile.csv"),[Delimiter=";", Columns=19, Encoding=65001, QuoteStyle=QuoteStyle.None]), 
    

    Nell'esempio che segue io preferisco avere in una cella il percorso ed in un'altra il nome del file, ma se il primo è fisso puoi evitarlo.

    In un foglio usa le celle per storicizzare i due valori, ad esempio:

    come puoi vedere la cella B1 ha il nome Path, lo stesso per B2 a cui ho dato il nome Filename

    e lo puoi fare direttamente su qualsiasi cella: ti posizioni in essa e nella finestra del riferimento a sinistra della barra della formula digiti il nome che vuoi.

    Considera che Power Query è case sensitive, per cui maiuscole e minuscole non sono uguali.

    Dalla situazione precedente, arrivi a questa:
    let

    path = Excel.CurrentWorkbook(){[Name="Path"]}[Content][Column1]{0}, 
    
    filename = Excel.CurrentWorkbook(){[Name="Filename"]}[Content][Column1]{0}, 
    
    Origine = Csv.Document(File.Contents(path&"\"&filename&".csv"),[Delimiter=";", Columns=19, Encoding=65001, QuoteStyle=QuoteStyle.None]), 
    

    impostando in path e filename le variabili che poi unisci per creare il nome del file completo,

    ciao.

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2025-05-21T17:32:41+00:00

    La risposta è stata tradotta automaticamente. Di conseguenza, potrebbero esserci errori grammaticali o parole insolite.

    Ciao Giovanni, Buona giornata e benvenuto nella comunità. Di seguito è riportato il mio approccio alla tua richiesta utilizzando una cella/tabella in Excel per aggiornare dinamicamente il percorso del file:

    1. Crea un intervallo denominato o una tabella Excel:
      • In una cella di Excel (ad esempio, A1), digitare il percorso completo del file CSV (ad esempio, C:\Reports\Report_20240521.csv).
      • Assegna un nome a questa cella come Intervallo denominato (ad esempio, FilePath) tramite la scheda Formule.
    2. Creare un parametro di Power Query:
      • Nell'editor di Power Query:
        • Vai alla Home > Gestisci parametri > Nuovo parametro.
        • Assegnagli FilePathun nome, imposta type su Text e usa la formula:
            = Excel.CurrentWorkbook(){[Name="FilePath"]}[Content]{0}[Column1]
          
        • In questo modo viene letto in modo dinamico il valore dall'intervallo denominato.
    3. Aggiorna l'origine della query:
      • Modifica il passaggio di importazione CSV esistente per utilizzare il parametro:
          = Csv.Document(File.Contents(FilePath), [Delimiter=",", Encoding=1252])
        
      • Sostituisci FilePath con il nome del parametro se diverso.
    4. Utilizzo:
      • Aggiorna il valore della cella (ad esempio, A1) al nuovo percorso CSV (ad esempio, Report_20240522.csv).
      • Aggiornare la query per caricare il nuovo file.

    Non è richiesto VBA! Il meccanismo di aggiornamento di Power Query gestirà il resto. Se hai bisogno di ulteriore assistenza, ti preghiamo gentilmente di contattare direttamente il nostro supporto tecnico tramite:https://go.microsoft.com/fwlink/p/?linkid=2024339, nella parte inferiore destra della pagina, seleziona Guida e supporto tecnico.

    Migliori saluti

    Hoang-D - MSFT | Specialista del supporto della community Microsoft

    La risposta è stata utile?

    0 commenti Nessun commento