Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1888to1892
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

Power Query VBA Abfragen zusammenführen

Power Query VBA Abfragen zusammenführen
27.06.2022 11:20:20
Sarah
Hallo Zusammen,
ich hoffe hier kann mir jemand weiterhelfen.
Mein Ziel ist es mehrere Abfragen aus verschiedenen CSV-Dateien mit einem Makro zusammenzuführen.
Bisheriger funktionierender Stand:
Die Abfragen werden mit einem Makro erzeugt. Die Pfade für die Dateien werden mithilfe der Dateinamen erstellt und in einem Array gespeichert. In einer For-Schleife werden dann mit den erzeugten Pfade eine Abfrage mit Verbindung erstellt.
Abfragen zusammenführen im Power Query(ohne Makro) :
Wenn ich meine Abfragen manuell im Power Query erstelle, erhalten die Abfragen automatisch einen Namen. Diese Namen der Abfragen werden dann mit der Methode Table.Combine zusammengeführt.
Noch Offen:
Bei dem manuellen Zusammenführen der Abfragen, wird automatisch die Namen der Abfragen in der Methode "Table.Combine" aufgelistet , siehe Bild im Anhang.
Userbild
Nun möchte ich dieses Teil über mein Makro laufen lassen. Meine Namen der Abfragen sind in einem Array gespeichert. Nun weiss ich aber leider nicht, wie ich den Inhalt des Arrays nacheinander auslesen kann. Ich hatte auch schon die Idee mit Stringbuilder zu arbeiten und die Namen in einem großen String zu speichern nur hatte das leider nicht in meinem Makro funktioniert.
Ich würde mich freuen, wenn jemand eine Idee hätte, wie ich die Abfragenamen (wie in dem Bild) in die Methode mit einem Makro einschreiben könnte.
Ich hoffe meine Erklärung war verständlich, ansonsten erläutere ich gerne noch bestehende Unklarheiten. Ich bedanke mich und verbleibe
mit vielen Grüßen
Sarah

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Power Query VBA Abfragen zusammenführen
27.06.2022 12:21:09
Yal
Hallo Sarah,
hier gibt es verschiedene Möglichkeiten.
Abgesehen davon, wenn alle deine CSV dieselbe Struktur haben und idealerweise in nur einem Verzeichnis liegen, könnten diese in einer einzigen PQ-Abfrage gelesen werden. Filter-Möglichkeit vor dem Laden gäbe es auch.
Weiter kommen wir leider nur auf Basis von deinem bisherigen Werk. Beseitige oder verfremde darin alles, was nicht im Internet gehört und lade deine Datei mit "Zum File-Upload".
VG
Yal
AW: Power Query VBA Abfragen zusammenführen
27.06.2022 13:31:40
Sarah
Hallo Yal,
Die CSV-Dateien liegen zwar alle in einem Verzeichnis aber die Wahl der Dateien erfolgt aus einer vorgegeben Liste. In der Musterdatei ist diese Tabelle im Tabellenblatt 1 zu sehen. Mit dieser Tabelle werden die Dateinamen in ein Array gespeichert und anschließend ein Pfad erstellt. und in ein weiteres Array gespeichert. Der Name der Abfrage ist hier auch der Name der Datei. Daher benötige ich die Möglichkeit den Inhalt des Arrays(mit den Dateinamen/auch Abfragenamen) in einem String zu übergeben .
https://www.herber.de/bbs/user/153787.xlsm
Ich bedanke mich schon und verbleibe mit
vielen Grüßen
Sarah
Anzeige
AW: Power Query VBA Abfragen zusammenführen
27.06.2022 19:11:49
Yal
Hallo Sarah,
es geht wesentlich einfacher, und vor allem im Sinne der Erfindung von Power Query:
_ im Menü Daten, "Neue Abfrage", "aus Datei", "Aus Ordner". Du wählst das Verzeichnis "C:\Users\Ordner\" aus
_ Abfrage in "Dateiliste" umbenennen (nur für die Erklärung wichtig)
_ zuerst stehen lassen, also "Schliessen & laden in ...", "nur Verbindung herstellen"
_ auf die vorhandene Tabelle "Tabelle1", Menü "Daten", "aus Tabelle"
_ "Spalte hinzufügen", "Benutzerdefinierte Spalte", Name "Datei", Formel "=[Dateiname] & ".csv"
_ gehe auf die Abfrage "Dateiliste",
_ Menü "Start", "Abfrage zusammenführen", Spalte "Name" aus der Abfrage "Dateiliste" und Spalte "Datei" aus "Tabelle1", Join-Art "innerjoin"
_ im Überschrift vom Spalte "Content", die 2 Pfleile nach unten klicken,
_ Behandlung vornehmen, wie in deiner bisherige Datei-Abfrage.
Nun sind alle deine Datei aus der Liste in "Tabelle1" bereits kombiniert.
Dasselbe mit der Sollwert-Datei.
Dann beide in "Dateiliste" kombinieren,
Schliessen & Laden
in der Abfrage-Liste "Dateiliste" auswählen, rechtsklicken, "Laden in..." "Nur Verdindung" belassen, aber "Dem Datenmodell hinzufügen" anhaken.
Dann Menü "Einfügen", "Pivottabelle" und als Quelle den Datenmodell verwenden.
Fertig.
Dass deine Datei "Sollwert" nicht dieselbe Spaltendefinition wie die anderen Datei könnte zu einer Schwierigkeit führen.
VG
Yal
Anzeige
AW: Power Query VBA Abfragen zusammenführen
29.06.2022 10:25:16
Sarah
Hallo Yal,
vielen Dank für die ausführliche Beschreibung einer Lösung. Ich hatte zuvor auch so einen Versuch in dem die Daten anschließend kombiniert werden. Da ich alles über das Makro laufen lassen möchte und die benutzerdefinierten Spalten Schwierigkeiten verursacht haben, habe ich diesen anderen Weg gewählt. Sobald das Makro gestartet wird sucht es für die weiteren Arbeitsschritte die benutzerdefinierte Spalte, welche gleichzeitig erstellt werden soll. Dies ergab dann leider immer ein Fehler. Vielleicht gibt es eine andere Möglichkeit benutzerdefinierte Spalten über das Makro zu generieren, die mir noch nicht bekannt sind aber das ist mein bisheriger Versuchsstand. Da mit dem neuem Ansatz die restlichen Schritte problemlos funktionieren, würde ich mich freuen wenn es eine Möglichkeit gäbe den Arrayinhalt in einen langen String zu speichern. Ich bedanke mich und verbleibe mit
vielen Grüßen
Sarah
Anzeige
AW: Power Query VBA Abfragen zusammenführen
30.06.2022 14:57:58
Yal
Hallo Sarah,
ich vertehe deine Beschreibung nicht. Eine Power Query Abfrage ist ein abgeschlossenes Gewerk. Diese mit einer Makro zu verunstalten ("benutzerdefinierte Spalte" ist eine reine PQ-Begriff) ist nicht zielführend.
das kommagetrennte Auflisten von Zelleninhalte kann wie folgt erreicht werden (Über einen Array zu gehen ist unnötig verkompliziert):

Sub test()
Dim Z As Range
Dim Liste As String
For Each Z In Worksheets("Tabelle1").Range(Range("N2"), Range("N99999").End(xlUp)).Cells
Liste = Liste & ", " & Z.Value
Next
Liste = Mid(Liste, Len(", ") + 1) 'das führende Komma+Leerzeichen wieder loswerden
MsgBox Liste
End Sub
Wahrscheinlich soll es ein Komma ohne anschliessende Leerzeichen werden. Aber die Anpassung bekommst Du hin.
VG
Yal
Anzeige
AW: Power Query VBA Abfragen zusammenführen
12.07.2022 14:17:48
Sarah
Hallo Yal,
die Verwendung des Makros dient zur Sicherheit und Minimierung von Anwenderfehler. Vielen Dank für die Lösung zur Erstellung einer Liste. Ich habe dies auch gut umsetzten können. Nun ist mir folgendes aufgefallen. Wenn ich meine "Liste" als Variable in meine M-Formel übergebe wird ein zusätzliches Anführungszeichen am Anfang und Ende angehängt. Die Variable an sich hat keine zusätzlichen Anführungszeichen zu Beginn. Gibt es eine Möglichkeit, dass diese nicht angehängt werden?
In der Abbildung sieht man den erweiterten Editor mit der Auflistung.
Userbild
Die Abfragename wurde mit der Variable Liste im Makro übergeben.
Userbild
Für die korrekte Verwendung muss der erweiterte Editor folgendermaßen aussehen.
Userbild
Ich bedanke mich und freue mich über neue Ideen.
Anzeige

92 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige