Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1908to1912
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

PowerQuery User Pfad

PowerQuery User Pfad
21.11.2022 22:41:08
Lapos
Hallo, hat jemand eine Idee wie man eine Pfad in PQ so angeben kann das er sich Dynamisch zusammensetzt?
Hintergrund ist , wenn ich mein Excel Dokument an einen anderen PC gebe soll es den Userpfad des neuen PC nutzen ohne den PQ Pfad anpassen zu müssen.
Beispiel: Pfad in PQ lautet C:\Users\Chef\Desktop\Projekt und auf dem anderen PC C:\Users\Mitarbeiter\Desktop\Projekt
Was ich also erreichen möchte ist das nur das erste Stück dynamisch ist.
In VBA lässt sich sowas mit "Environ("UserProfile")" ansprechen.

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: PowerQuery User Pfad
22.11.2022 06:33:35
ralf_b
findest du es ok, hier zu fragen anstatt, sich erst mal per Suchmaschine eine Lösung zu erarbeiten?
Eine Lösung für dein Problem habe ich mit 3 einfachen Suchworten erhalten. Also, was soll das?
AW: PowerQuery User Pfad
22.11.2022 10:44:05
Lapos
Hallo Ralf , vielen Dank für deine Antwort.
Ja ich finde es sehr ok hier zu fragen. Ich denke dieses Forum lebt von Fragen und Antworten.
Ich habe mich bereits ausgibig belesen und auch mehrere Beiträge bzgl . Dynamischer Pfad in PQ gefunden. Das wusstes du leider nicht als du deine Antwort verfasst hast. Beim nächsten mal werde ich es dazuschreiben.
Nun nochmal zum Thema.
Die Lösung mit einer 2. Tabelle und der hinterlegung des Pfad wollte ich gerne vermeiden.
Daher kam mir die Idee es ähnlich zu handhaben wie mit dem "Environ("UserProfile")" in VBA.
Also den Pfad in PQ gleich so anzugeben: Environ("UserProfile")\Desktop\Projekt
Anzeige
AW: PowerQuery User Pfad
22.11.2022 13:31:29
ChrisL
Hi
Wenn man versteht, welche Lösungsansätze bereits probiert wurden und woran es ggf. gescheitert ist, kann man konkrete Hilfestellung leisten. Gleichzeitig wird dadurch Selbstinitiative gezeigt, was für den Antworter motivierend wirkt.
Folgende Lösung habe ich verwendet, um mich mal an einer benutzerdefinierten Funktion mit optionalem Parameter zu versuchen.
https://thebipower.fr/index.php/2020/03/04/get-username-function-in-power-query/
Neue leere Abfrage verwenden und folgender Code im erweiterten Editor einfügen. Der Abfrage den Namen fxDesktopPfad geben.

(optional Unterordner as text) =>
let
BasisPfad = "C:\Users\",
Source = Folder.Contents(BasisPfad),
#"Expanded Attributes" = Table.ExpandRecordColumn(Source, "Attributes", {"Hidden", "Directory", "ChangeTime"}, {"Hidden", "Directory", "ChangeTime"}),
#"Filtered Directories not hidden" = Table.SelectRows(#"Expanded Attributes", each ([Directory] = true) and ([Hidden] = false)),
#"Removed Errors" = Table.RemoveRowsWithErrors(#"Filtered Directories not hidden", {"ChangeTime"}),
#"Filtered Rows" = Table.SelectRows(#"Removed Errors", each ([Name]  "Public")),
#"Username" =
if Unterordner = null then
BasisPfad & #"Filtered Rows"{0}[Name] & "\Desktop"
else
BasisPfad & #"Filtered Rows"{0}[Name] & "\Desktop" & Unterordner
in
#"Username"
Die Ordnerabfrage sieht wie folgt aus:

let
Quelle = Folder.Files(fxDesktopPfad("\Projekt"))
in
Quelle
Den optionalen Parameter kann man aber auch weglassen:

let
Quelle = Folder.Files(fxDesktopPfad())
in
Quelle
cu
Chris
Anzeige
AW: PowerQuery User Pfad
22.11.2022 17:57:17
Lapos
Vielen Dank Chris für deinen ausführlichen und gut verständlichen Beitrag,
das ist für mich eine gute Lösung.
VG
Michelle Lapos
AW: PowerQuery User Pfad
23.11.2022 17:14:57
Jan
Hallo
Da das Thema mich auch sehr interessiert hat, habe ich das ganze bei mir mal getestet.
Was nicht bei mir klappen will ist die Ordnerabfrage Code, hier ist irgendwas faul bzw. ich habe was nicht richtig verstanden.
Wie gesagt bei der Ordnerabfrage kommt eine Fehlermeldung.
Vielleicht kann mir jemanden sagen was ich falsch mache bzw. was ich genau machen muss das dies auch bei mir klappt?
Danke im voru
AW: PowerQuery User Pfad
23.11.2022 18:00:25
ChrisL
Hi Jan
Nimm mal die Originallösung aus dem Link:

let
Source = Folder.Contents("C:\Users\"),
#"Expanded Attributes" = Table.ExpandRecordColumn(Source, "Attributes", {"Hidden", "Directory", "ChangeTime"}, {"Hidden", "Directory", "ChangeTime"}),
#"Filtered Directories not hidden" = Table.SelectRows(#"Expanded Attributes", each ([Directory] = true) and ([Hidden] = false)),
#"Removed Errors" = Table.RemoveRowsWithErrors(#"Filtered Directories not hidden", {"ChangeTime"}),
#"Filtered Rows" = Table.SelectRows(#"Removed Errors", each ([Name]  "Public")),
#"Username" = #"Filtered Rows"{0}[Name]
in
#"Username"
Damit sollte dein Benutzername angezeigt werden, was wahrscheinlich nicht funktioniert. Dann mal durch die Einzelschritte gehen und prüfen. Kann sein, dass bereits der Start-Pfad "C:\Users\" ungültig ist.
cu
Chris
Anzeige
AW: PowerQuery User Pfad
23.11.2022 20:07:22
Jan
Hallo Chris
Erstmal danke für deine schnelle Rückmeldung.
Dein letzter M-Code funktioniert so wie er jetzt ist, als Ergebnis bekomme ich mein Username richtig angezeigt.
So wenn ich nun diesen Code hinzufüge unten:

#"Username" =
if Unterordner = null then
BasisPfad & #"Filtered Rows"{0}[Name] & "\Desktop"
else
BasisPfad & #"Filtered Rows"{0}[Name] & "\Desktop" & Unterordner
Jetzt bekomme ich die Fehlermeldung:

Der Name "Unterordner" wurde nicht erkannt
Woran kann das liegen?
Anzeige
AW: PowerQuery User Pfad
24.11.2022 08:28:01
ChrisL
Hi
OK, dann noch einmal zurück zu meinem ursprünglichen Vorschlag:
WICHTIG: Der Abfrage/Funktion den Namen fxDesktopPfad geben:

(optional Unterordner as text) =>
let
BasisPfad = "C:\Users\",
Source = Folder.Contents(BasisPfad),
#"Expanded Attributes" = Table.ExpandRecordColumn(Source, "Attributes", {"Hidden", "Directory", "ChangeTime"}, {"Hidden", "Directory", "ChangeTime"}),
#"Filtered Directories not hidden" = Table.SelectRows(#"Expanded Attributes", each ([Directory] = true) and ([Hidden] = false)),
#"Removed Errors" = Table.RemoveRowsWithErrors(#"Filtered Directories not hidden", {"ChangeTime"}),
#"Filtered Rows" = Table.SelectRows(#"Removed Errors", each ([Name]  "Public")),
#"Username" =
if Unterordner = null then
BasisPfad & #"Filtered Rows"{0}[Name] & "\Desktop"
else
BasisPfad & #"Filtered Rows"{0}[Name] & "\Desktop" & Unterordner
in
#"Username"
Und jetzt ohne Ordnerabfrage, einfach nur die Funktion in einer leeren Abfrage anwenden:

let
Quelle = fxDesktopPfad()
in
Quelle
Als Ergebnis sollte jetzt ein gültiger Desktop-Pfad angezeigt werden. Prüfe den Pfad und kopiere ihn z.B. mal in den Dateiexplorer.
Was war eigentlich die Fehlermeldung, als du die Ordnerabfrage ursprünglich ausgeführt hast?
cu
Chris
Anzeige
AW: PowerQuery User Pfad
24.11.2022 20:55:22
Jan
Hallo
So:
Die eigentliche Funktion wie auch schon gesagt läuft ohne Fehlermeldung, natürlich habe ich sie auch wie du es beschrieben hast umbenannt.
Es ist richtig nun wird ein gültiger Desktop-Pfad angezeigt, habe auch in den Dateiexplorer.kopiert läuft ohne Probleme.
Füge ich nun in eine dritte Abfrage folgenden M-Code:

let
Quelle = Folder.Files(fxDesktopPfad())
in
Quelle
bekomme ich die Fehlermeldung Ordner nicht gefunden.
Obwohl er zu 100% auf dem Desktop liegt sogar mit Unterordnern.
Wenn ich über Dieser PC > Desktop >Projekt gehe findet er alles was in dem Ordner drin ist.
Was mache ich falsch?
Anzeige
AW: PowerQuery User Pfad
25.11.2022 08:27:28
ChrisL
Hi Jan
Ich hatte einen fehlerhaften Pfad vermutet, aber damit war ich offensichtlich auf dem Holzweg. Langsam gehen mir die Ideen aus.
Einen letzten Test wäre noch die Ordnerabfrage mittels statischem Pfad zu prüfen. Also einfach
- Daten abrufen
- Aus Datei
- Aus Ordner
Sollte dieser Test funktionieren, hätte ich definitiv keine Idee mehr. Kann eigentlich nicht sein, dass der gleiche Pfad einmal funktioniert und einmal nicht. Auch wenn der Pfad im einen Szenario dynamisch erzeugt wird, handelt es sich letztlich um den gleichen Text-String.
Sollte eine Ordnerabfrage auf den Desktop-Pfad ganz generell nicht gehen, würde ich mal spezifisch nach dem Problem "googlen". Vielleicht bringt es eine Idee. Ich denke es könnte dann nur noch mit einer speziellen Konstellation/Umgebung zu tun haben z.B. Remote Access, Citrx, Apple-Umgebung, Server-/Netzwerk-Thema etc.
cu
Chris
Anzeige
AW: PowerQuery User Pfad
27.11.2022 20:03:12
Jan
Hallo ChrisL
Sorry das ich mich jetzt erst wieder melde.
Habe heute noch mals rum probiert und gegoogelt.
Ich bin nun zum Endschluß gekommen deine Ordner Abfrage funktioniert schon, aber:
Unter meinem Benutzer Name egal ob PC oder Laptop gibt es keinen Ordner "Desktop" in sofern ist es richtig das die Ordnerabfrage so nicht funktioniert.
Unter meinem Benutzer Name sind die Ordner ( One Drive, Dropbox usw.) zufinden.
Die Ordnerabfrage mittels statischem Pfad klar funktioniert diese auch.

60 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige