Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Pfad für externe Verbindung variabel

Pfad für externe Verbindung variabel
13.06.2021 17:36:50
Jörn
Hallo,
ich möchte eine externe Verbindung variabler gestalten. Im erweiterten Editor ist der Pfad der Verbindung hinterlegt:
let
Quelle = Folder.Files("C:\Users\joern\Downloads"),
#"Gefilterte Zeilen" = Table.SelectRows(Quelle, each Text.StartsWith(Text.Lower([Extension]), ".json")),
#"Sortierte Zeilen" = Table.Sort(#"Gefilterte Zeilen",{{"Date created", Order.Descending}}),..........
ich suche eine Möglichkeit den Pfad durch eine Zelle zu bestimmen z. B. auf dem Blatt "NEU" Zelle A1. In Zelle a1 sollte dann der neue Pfad hinterlegbar sein.
Es wäre toll, wenn jemand eine Lösung für mich hätte, ich habe es alein leider nicht geschafft.
Gruss
Jörn
Anzeige

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Pfad für externe Verbindung variabel
13.06.2021 17:46:36
Hajo_Zi
Hallo Jörn,
ändere über VBA, Daten, Verbindungen, Verknüpfung bearbeiten die Quelle.
Ein Bezug zur Zelle geht nur über Indirekt und dazu muss die Quelle auf sein.
GrußformelHomepage
Anzeige
mittels parameterabfrage oder function
13.06.2021 18:40:40
ralf_b
z.b. Tabelle tableConfig mit Pfad

 C
2https://namexy.sharepoint.com/sites/.......
dann

// Funktion um den Pfad aus der Tabelle zu holen
let Parameter=(TableName as text,RowNumber as number) =>
let
Quelle = Excel.CurrentWorkbook(){[Name=TableName]}[Content],
// Weet wird aus Spalte "Path" gelesen
value = Quelle{RowNumber-1}[Path]
in
value
in Parameter
// Aufruf in deiner Abfrage. in diesem Fall eine Webadresse aus Tabelle tabelConfig zeile 1
Quelle = Excel.Workbook(Web.Contents(#"fParam"( "tableConfig", 1)), null, true),

Anzeige
AW: mittels parameterabfrage oder function
14.06.2021 18:27:44
Jörn
Hallo Ralf,
Vielen Dank für deine Antwort.
Verstehe ich es richtig, dort im erweiterten Editor der Verbindung, wo Quelle steht muß ich alles ab let parameter...einsetzen?
Table name wäre bei mir Neu, bleiben die Klammern erhalten?
Row number 1, ,steht dafür die -1 ?
Aber wo kommt die Zeile hin ?
Es wäre nett, wenn du für das Beispiel "ZelleA1 im Blatt Neu" die Informationen einfügen könntest. Was ich probiert habe hat nicht funktioniert und ich weiß nicht ob ich falsche Klammern oder Werte für die Zelle eingesetzt habe.
Gruß
Jörn
Anzeige
AW: mittels parameterabfrage oder function
14.06.2021 19:27:00
Yal
Hallo Jörn,
in dem Fall geht es darum, dass Du in einem ExcelTabellenblatt eine separate Tabelle anlegt(Einfügen, Tabelle oder Strg+t), wo der Pfad liegt. Diese Tabelle hat in dem Beispiel von Ralf den Name "TableName". Dann baust Du darauf eine PQ-Abfrage, die Du in einen Parameter umwandelst. So kannst Du diesen Parameter in deiner Hauptabfrage verwenden.
VG
Yal
Anzeige
AW: mittels parameterabfrage oder function
14.06.2021 20:18:27
ralf_b
Hallo Jörn,
Ich muß dazu sagen, das ich diese Variante auch erst seit Kurzem kenne und noch wenig Erfahrung damit habe.
Evtl geht das ja auch einfacher bzw kürzer.
Mein Vorschlag soll so funktionieren.
Der Code von "let parameter" bis "in parameter" bildet eine eigene Abfrage als Function mit dem Namen "fParam" . Also die Parameterabfrage heißt fParam.
Diese Function schaut quasi auf eine Intelligente Tabelle im Arbeitsblatt. "TableName" und Rownumber sind nur Variablen innerhalb der Function.
Im Code mit der Quelle ist der Funktionsaufruf vom fParam mit dem echten Namen der intelligenten Tabelle und der Zeilennr. als Übergabeparameter der Funktion.
Rownumber -1 funktioniert einfach so. nicht drüber nachdenken. Wenn der gesuchte Wert in der ersten Zeile deiner Tabelle steht, dann wird das mit "Neu", 1 klappen.
Quelle = Excel.Workbook(Web.Contents(#"fParam"( "Neu", 1)), null, true),
Mit ein bissel rumprobieren bekommst du das hin.
Gruß
rb
Anzeige
AW: mittels parameterabfrage oder function
17.06.2021 15:58:47
Jörn
Hallo Ralf,
erst einmal herzlichen Dank,
wegen des schönen Wetters konnte ich erst jetzt deine Lösung ausprobieren. Ich habe also Quelle wie angegeben ersetzt und in Zelle A1 im Blatt neu den Pfad eingesetzt.. Leider hat es nicht funktioniert, ich habe folgende Fehlermeldung erhalten:
Expression Error Der Import fParam entspricht keinem Export. Dies ist möglicherweise auf einen fehlenden Modulverweis zurückzuführen.
Gruß
Jörn
Anzeige
AW: mittels parameterabfrage oder function
18.06.2021 06:32:17
ralf_b
Hallo Jörn,
Mit der Erklärung "habe es so und so gemacht" und "funktioniert nicht", kann man aus der Ferne nicht wirklich was anfangen.
Ohne deinen Code zu sehen und den Pfad zu kennen macht es wenig Sinn dir in dem Moment Hilfe anbieten zu wollen. Yal's Link scheint vielversprechend.
gruß
rb
Anzeige
AW: mittels parameterabfrage oder function
18.06.2021 17:03:42
Jörn
Hallo Ralf,
meine Abfrage sieht so aus (Erweiterter Editor der Verbindung Schluss gekürzt):
let
Quelle = Folder.Files("C:\Users\joern\Downloads"),
#"Gefilterte Zeilen" = Table.SelectRows(Quelle, each Text.StartsWith(Text.Lower([Extension]), ".json")),
#"Sortierte Zeilen" = Table.Sort(#"Gefilterte Zeilen",{{"Date created", Order.Descending}}),
#"Hinzugefügte benutzerdefinierte Spalte" = Table.AddColumn(#"Sortierte Zeilen", "Pfad", each [Folder Path]&[Name]),
#"Ergebnis1" = #"Hinzugefügte benutzerdefinierte Spalte"{0}[Pfad],
#"Ergebnis2" = Json.Document(File.Contents(#"Ergebnis1")),............
Die Quelle habe ich wie von dir vorgegeben ersetzt:
Quelle = Excel.CurrentWorkbook(){[Name=Neu]}[Content],
value = Quelle{RowNumber-1}[Path]
Und auf dem Blatt neu in Feld A1 den Pfad eingetragen: C:\Users\joern\Downloads
darauf habe ich die angegebene Fehlermeldung erhalten.
Ich werde mir Yals link natürlich ansehen, vielen Dank Yal!
Gruß
Jörn
Anzeige
AW: mittels parameterabfrage oder function
18.06.2021 17:40:29
ralf_b
Ich bin mir nicht sicher ob du meinen Vorschlag richtig verstanden hast.
Wo in deiner Abfrage definierst du denn den Wert, in Rownumber? Rownumber ist eine Variable ,die in meinem Vorschlag nur innerhalb einer eigenen Funktion(fParam) existiert. Mittels Funktionsaufruf (fParam tabellenname, Zeile) werden Werte an die Funktion übergeben und anhand dieser Werte dann der gesuchte Pfad aus einer Tabelle geholt.
In meinem Vorschlag wird davon ausgegangen das es eine Tabelle (Nicht ein Blatt) mit dem Namen "tableConfig" gibt. Dort existiert eine Spalte mit der Überschrift "Path" .
Wenn in deinem Tabellenblatt der Pfad in A1 steht. kann dort keine Spaltenüberschrift "Path"stehen. Somit geht der Aufruf value = Quelle{RowNumber-1}[Path] nicht.
Dazu evtl hilfreich. https://ssbi-blog.de/blog/business-topics/power-query-kennt-3-excel-objekte-nutzt-du-sie-richtig/
Anzeige
AW: mittels parameterabfrage oder function
18.06.2021 17:52:09
Jörn
Hallo Ralf,
offensichtlich habe ich deinen Vorschlag nicht richtig verstanden, ich werde es nochmal versuchen, Danke
GrußJörn
AW: mittels parameterabfrage oder function
19.06.2021 13:41:56
Hajo_Zi
offen bedeutet es soll noch eine Antwort kommen.
Warum ist dein Beitrag Offen.
Du willst doch was machen. Soll jemand vorbei kommen?
Ich konnte dies im Beitrag nicht lesen!
Das ist nur meine Meinung zu dem Thema.
GrußformelHomepage
Anzeige
AW: mittels parameterabfrage oder function
19.06.2021 15:39:09
Jörn
Hallo Ralf, hallo Yal,
Ich hatte noch einen dummen Fehler drin, aber jetzt hat es funktioniert.
Herzlichen Dank noch einmal für euere Hilfe.
Hallo Hajo,
Ich finde es richtig den Beitrag offen zu lassen, wenn man noch dabei ist, die Lösung zu prüfen und sich noch eine Frage ergeben kann. Die, die geholfen haben und die, die das Thema interessiert möchten sicherlich auch wissen, ob die vorgeschlagene Lösung funktioniert hat.
Ich freue mich jedenfalls, dass ich nach deinem ersten Beitrag nicht gleich aufgegeben und durch die Hilfe von Ralf und Yal eine Lösung gefunden habe.
Gruß Jörn
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Externer Pfad in Power Query variabel gestalten


Schritt-für-Schritt-Anleitung

  1. Tabelle erstellen: Erstelle eine Excel-Tabelle auf einem Blatt, z.B. „NEU“, mit einer Spalte, die den Pfad enthält. Nenne die Tabelle „tableConfig“. Dein Pfad sollte in der ersten Zeile dieser Tabelle stehen.

  2. Power Query aufrufen: Gehe zu „Daten“ > „Abfragen und Verbindungen“. Wähle „Neue Abfrage“ > „Aus Datei“ > „Aus Ordner“, um den Power Query Editor zu öffnen.

  3. Erweiterter Editor: Klicke auf „Erweiterter Editor“ und ersetze den Code durch Folgendes:

    let
        Parameter = (TableName as text, RowNumber as number) =>
        let
            Quelle = Excel.CurrentWorkbook(){[Name=TableName]}[Content],
            value = Quelle{RowNumber-1}[Path]
        in
            value,
        Quelle = Excel.Workbook(Web.Contents(Parameter("tableConfig", 1)), null, true)
    in
        Quelle
  4. Anpassen: Stelle sicher, dass der Tabellenname und die Zeilennummer korrekt sind. In diesem Fall ist die Zeile 1 für den Pfad in deiner Tabelle „tableConfig“.

  5. Daten laden: Klicke auf „Schließen & Laden“, um die Daten in dein Excel-Blatt zu importieren.


Häufige Fehler und Lösungen

  • Fehlermeldung „Der Import fParam entspricht keinem Export“: Stelle sicher, dass die Funktion Parameter richtig definiert ist und dass du den richtigen Tabellen- und Zeilennamen verwendest.

  • Kein Pfad gefunden: Überprüfe, ob der Pfad tatsächlich in der Tabelle steht und dass die Tabelle korrekt formatiert ist.

  • Syntaxfehler: Achte darauf, dass alle Klammern korrekt gesetzt sind und die richtige Anzahl an Argumenten übergeben wird.


Alternative Methoden

Eine andere Möglichkeit, einen dynamischen Pfad zu verwenden, besteht darin, über die Eingabe von „Daten“ > „Verbindungen“ > „Verknüpfung bearbeiten“ die Quelle manuell anzupassen. Du kannst auch VBA verwenden, um den Pfad aus einer Zelle zu lesen, wenn du mehr Kontrolle benötigst.


Praktische Beispiele

Wenn du beispielsweise einen Excel Power Query Parameter aus Zelle nutzen möchtest, kannst du die folgende Struktur verwenden:

let
    Quelle = Folder.Files(Parameter("Neu", 1)),
    #"Gefilterte Zeilen" = Table.SelectRows(Quelle, each Text.StartsWith(Text.Lower([Extension]), ".json")),
    #"Sortierte Zeilen" = Table.Sort(#"Gefilterte Zeilen",{{"Date created", Order.Descending}})
in
    #"Sortierte Zeilen"

Hierbei wird der Pfad aus der Zelle A1 im Blatt „NEU“ gelesen.


Tipps für Profis

  • Nutze if text.startswith Power Query für die Filterung von Dateien, um nur bestimmte Dateitypen zu importieren.

  • Experimentiere mit relativen Pfaden, um die Dateiübertragungen zu vereinfachen, insbesondere wenn du die Datei auf verschiedenen Computern verwendest.

  • Stelle sicher, dass deine Tabelle als „intelligente Tabelle“ formatiert ist, um die Dynamik in den Verknüpfungen zu erhöhen.


FAQ: Häufige Fragen

1. Wie kann ich den Pfad dynamisch ändern? Du kannst den Pfad in der Zelle der Tabelle „tableConfig“ ändern, und die Abfrage wird automatisch aktualisiert.

2. Funktioniert das nur in bestimmten Excel-Versionen? Ja, diese Methoden sind in neueren Versionen von Excel verfügbar, die Power Query unterstützen, wie Excel 2016 und später.

3. Kann ich mehrere Parameter nutzen? Ja, du kannst mehrere Parameter definieren, indem du sie in der Funktion hinzufügst und entsprechend im Code aufrufst.

4. Was mache ich bei komplexen Pfaden? Für komplexe Pfade kannst du verschachtelte Funktionen verwenden, um die Struktur zu durchbrechen und auf bestimmte Ordner oder Dateien zuzugreifen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige