Dynamischer Dateipfad Power Query

Wenn Sie ein Power Query verwenden und das Query bei Ihnen funktioniert, dann heisst dies noch lange nicht, dass es auch bei Ihrem Kollegen funktioniert. Typischerweise hat der Kollege einen anderen Netzwerkpfad oder er möchte die Datei in einem anderen Ordner speichern oder benennt die Datei um. Daher ist es sinnvoll, dass Sie den Pfad der Quelldateien dynamisch hinterlegen.

In diesem Beitrag zeige ich Ihnen, wie Sie in Power Query einen dynamischen Dateipfad erstellen können

Beispiel Dynamischer Dateipfad in Power Query

Diese Technik ist zum Sammeln von Daten aus Dateien auf Ihrem Computer gedacht. Es ist praktisch, wenn sich der Name Ihrer Rohdatei ändert oder sich der Rohpfad geändert hat. Sie können den Pfad oder den Dateinamen in der Zelle aktualisieren, ohne mit dem Power-Query-Code herumzuspielen, wenn Sie die Rohdatei aktualisieren.

Befolgen Sie diese Schritte, um einen dynamischen Dateipfad zu erstellen:

Beispiel Dynamischer Dateipfad in Power Query

Namensbereich erstellen

1. Erstellen Sie einen Namensbereich in Excel. In diesem Beispiel verwende ich Zelle C2 als meinen Namensbereich. Wählen Sie Zelle C2 aus, klicken Sie dann auf die Registerkarte Formel und dann auf Name Manager.

Erstellen Sie einen Namensbereich in Excel
2. Das Name Manager-Formular wird angezeigt. Klicken Sie auf Neu.

3. Das Formular „Neuer Name“ wird angezeigt. Benennen Sie den Namensbereich als „DynamicPath“. Klicken Sie dann auf OK.

4. Der Bereich „Neuer Name“ wird nun im Formular „Name Manager“ angezeigt. Klicken Sie auf Schliessen.
5. Kopieren Sie den Dateipfad der Rohdatei in Zelle C2

Power Query öffnen

6. Erstellen Sie ein Query. Klicken Sie auf Registerkarte Daten, Neue Abfrage, Aus Datei, Aus Arbeitsmappe.
7. Wählen Sie die Rohdatei aus. Klicken Sie auf Importieren.

Daten mit Power Query transformieren

8. Wählen Sie die richtige Tabelle aus, eine Vorschau wird angezeigt, und klicken Sie dann auf Daten transformieren.

9. Power Query Editor wird angezeigt. Klicken Sie im Home-Tab auf Advanced Editor.

M-Code in Power Query

10. Der M-Code wird angezeigt. Wir werden eine Variable mit dem Namen „DynamicPathfromExcel“ für den Dateipfad hinzufügen. Und entfernen Sie den vollständigen Pfad im ersten Code.
Quelle = Excel.Workbook(File.Contents(), null, true),
Fügen Sie dann diesen Code unter dem „Let“-Code ein.

DynamicPathfromExcel = Excel.CurrentWorkbook(){[Name="DynamicPath"]}[Content]{0}[Column1],

Fügen Sie dann die Variable in „Quellabfragen“ ein, um es so zu machen:

Source = Excel.Workbook(File.Contents(DynamicPathfromExcel), null, true),

11. Klicken Sie dann auf Fertig.
Power Query editor
12. Klicken Sie auf Schließen und laden.
Klicken Sie auf Schließen und laden

13. Die dynamische Abfrage wird nun über den Pfad in C2 geladen, nicht im statischen Code der Abfrage.

Wenn der Pfad oder der Dateiname geändert wird, dann passen Sie einfach C2 an und aktualisieren Sie die Tabelle, indem Sie mit der rechten Maustaste auf die Tabelle klicken und dann auf Aktualisieren klicken. Ihre Daten werden aktualisiert, ohne den Power-Query-M-Code zu bearbeiten.

Benötigen Sie Excel-Hilfe?

Brauchen Sie Unterstützung in Excel oder einen Programmierer für Makros. Kontaktieren Sie uns entweder via Kontaktformular https://www.exact-construct.ch oder 052 511 05 25.

6 Kommentare zu „Dynamischer Dateipfad in Power Query erstellen“

  1. Olaf Wessolek

    Hallo zusammen,
    ich habe ein kleines Problem für mich. Ich will mehrere Exportdateien zusammenführen, wobei bei einer Exportdatei die einzige Arbeitsmappe sich im Namen jedes mal ändert, weil der Mappenname das Exportdatum festlegt.

    Der Code ist jedoch noch auf die erste Exportdatei der ursprünglichen Mappennamen gelegt.

    Wie kann ich auf die einzige Mappe verweisen, dass es egal ist, die die Arbeitsmappe heißt?

    Der Power Query Code lautet:
    let
    Quelle = Excel.Workbook(File.Contents(„J:\Eigene Dateien\1_Import\OSx.xlsx“), null, true),
    #“20230703_120126_Sheet“ = Quelle{[Item=“20230703_120126″,Kind=“Sheet“]}[Data],
    #“Höher gestufte Header“ = Table.PromoteHeaders(#“20230703_120126_Sheet“, [PromoteAllScalars=true]),

    Leider habe ich den oberen Tipp nicht für meinen Fall erfolgreich umsetzen können. Für eine unterstützende Hilfe wäre ich sehr dankbar.
    Besten Dank im Voraus
    beste Grüße Olaf

      1. Olaf Wessolek

        Hallo guten Morgen Adrian,
        Entschuldigung für meine schlechte Reaktionszeit. Vielen Dank Für deinen Lösungshinweis, den ich mir gleich zu Gemüte führe. Ich gebe Dir danach auch nochmal einen Feedback, um dich Wissen zu lassen, ob dieser Lösungsweg für meine Bedürfnisse effizient waren. :-)

  2. Hallo,

    danke für die Super Hilfestellungen!

    Ich habe eine Frage: funktioniert die Abfrage auch für CSV Dateien und wenn ja, wie sieht der M-Code dafür aus?

    VG
    Lutz

    1. Hallo Lutz

      Der Ansatz funktioniert bei einer CSV-Datei genau gleich. Am Besten importierst du die csv-Datei mit PowerQuery, danach gehst du in den Erweiterten Editor und dann kannst du den Code wie oben beschrieben anpassen.

      Viele Grüsse
      Adrian

  3. Gerd Eisenacher

    Man kann das ganze auch in einer Datei erledigen.
    Ich habe eine Dateiliste mit allen Dateien, die sich im Ordner und allen Unterordnern befinden.
    Wenn die Dateinamen einem Namensschlüssel folgen kann kann man entsprechende Spalten einfügen und dann die Liste filtern.
    Bei Interesse gerne melden.

Kommentar verfassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Nach oben scrollen