Als Quelle habe ich verschiedene xlsx in verschiedenen Ordnern. Das habe ich entsprechend geändert und zumindest werden die Dateien erkannt. (Den Firewall-Fehler habe ich über Datenschutzeinstellungen der Abfrage beseitigt)
In den Exceldateien befinden sich mehrere intelligente Tabellen / Listen - hier im Beispiel nur 2, und der Abruf müsste nun auf eine bestimmte erfolgen - z.B. tbl_Dat (Die tbl_Grund wird später auch in die Zieldatei übernommen...). Es sollen alle Spalten übernommen werden.
Da komme ich nun nicht weiter. Der Tabellenname müsste entweder fest im Code eingefügt werden oder auch als Parameter in der linken Parametertabelle geführt und im Code dann genutzt werden. Der Name der Zieltabelle soll übrigens dem Quellnamen entsprechen, also beide dann tbl_Dat.
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)
ich habe schnell eine Abfrage, mit der ich alle Tabellen, aller Mappen eines Verzeichnisses importiere, so angepasst, dass du Pfad und Tabellenname über die Benannten Felder "P_Path" und "P_tbl" vorgeben kannst.
Code:
let wk_Path = Excel.CurrentWorkbook(){[Name="P_Path"]}[Content]{0}[Column1], wk_tbl = Excel.CurrentWorkbook(){[Name="P_tbl"]}[Content]{0}[Column1],
danke erst mal für den Ansatz. funktioniert auch für alle Dateien mit Mappe1 am Anfang des Namens in einem Verzeichnis. Ich bekomme es aber nicht gebacken, dass in den ursprünglichen Code, speziell für die in der Tabelle aufgeführten Dateien in unterschiedlichen Verzeichnissen, einzubauen.
Vorteilhaft wäre es eben auch, wenn alle Spalten übernommen werden sollen, dass man die trotz der zusätzlichen Spalte für den Dateinamen nicht aufführen muss. Würde das Anwenden (Programmieren) auf unterschiedliche Tabellen vereinfachen
Also statt der Spalten hier #"Expanded {0}" = Table.ExpandTableColumn(#"Filtered Rows1", "Data", {"Wer", "Was", "Wo", "Menge"}, {"Wer", "Was", "Wo", "Menge"})
vielleicht was mit einem Array (einer "zwischentabelle") , dass die Namen enthält bzw. abfragt, ohne sie explizit programmieren zu müssen.
let Source = Excel.CurrentWorkbook(){[Name="Tabelle2"]}[Content], FirstRow = Table.First(Source), AllColNames= Record.FieldNames(FirstRow) in AllColNames // (wobei das jetzt eine Tabelle der Zieldatei abfragt, müsste natürlich auf die Quelltabelle gehen und keine neue Tabelle erzeugen)
Der sicherste Ansatz für einen Irrtum ist der Glaube, alles im Griff zu haben. Nur, weil ich den Recorder bedienen kann, macht mich das noch lange nicht zum Musiker.
Auch in PQ lässt sich ziemlich viel bis fast alles dynamisieren. So kannst du beispielsweise aus der Titelzeile eine Liste erstellen, die du dann für das expandieren verwenden kannst.
Oder du erstellst dir für jede Importvariante eine Tabelle mit den Spalten, denen du dann auch die Spaltenformate mitgeben kannst.
Aber da ich zum einen noch nicht ganz verstanden habe, auf was es am Ende hinausläuft und ich aktuell noch ziemlich damit beschäftigt bin, die Nachwehen meines gestrigen Excelproblems zu beheben, habe ich dir nur mal schnell gezeigt, wie sich das eine Problem sehr einfach lösen lässt.
Ich hatte gestern, nach einem Neustart meines PCs, das Problem, dass Excel (Microsoft 365) beim starten Nach Anzeige des kleinen Startfensters sich aufgehängt hat und permanent ca. 15% CPU-Leistung verbraucht hat. Ich konnte es dann nur im abgesicherten Modus starten. Sämtliche Reparaturen und Neuinstallationen, als auch Systemwiederherstellung, haben das Problem nicht behoben. Heute Vormittag hat sich dann ein MS-Experte auf meinen PC aufgeschaltet, um das Problem zu lösen. Aber selbst dieser, Mit Rücksprache bei Entwicklern, hat mehr als 2 Stunden benötigt, bis Excel endlich wieder lief. Da aber das gesamte Officepaket neu aufgespielt wurde und an einigen Stellen in der Registry Reparaturmaßnahmen notwendig waren, besteht jetzt der Hauptaufwand darin, Outllook wieder so zu konfigurieren, wie es vorher war. Bei einem halben Dutzend Emailadressen, ist das hals nun ein wenig Fleißarbeit.
Die Ursache des Problems konnte der Experte auch nicht finden. Meiner Meinung nach eine sehr seltene Datenkonstellation, die im Code von MS nicht richtig behandelt wird.
Also, die Zusammenfassung sollte im Prinzip so aussehen wie die einzelnen Dateien, also eine tbl_Dat und eine tbl_Grund mit den Daten mehrerer - der in der Liste aufgeführten - Dateien. Da kommen später noch ein paar Dateien und auch ein paar Tabellen dazu, das alles dann in einzelnen, tabellenbezogenen Abfragen. Also keine Kombination von tbl_Dat und tbl_Grund.
Einfach gesagt würde ich für den Import der zweiten Tabelle tbl_Grund die Parametertabelle kopieren, eine zweite Abfrage erzeugen und darauf beziehen. Die Parametertabelle ist eben wichtig, weil ich gezielt bestimmte Tabellen bestimmter Dateien in bestimmten Verzeichnissen importieren will.
Ich hätte also für jede zu importierende Tabelle auch eine eigene Parametertabelle und Abfrage. Daher auch mein Gedanke mit den "automatischen" Spaltennamen - da bräuchte ich an der Stelle nicht umprogrammieren.
Man könnte das auch anders gestalten, z.B. in der Parametertabelle weitere Spalten für die unterschiedlichen Tabellen, die erste Abfrage würde sich dann auf die "Spalte" tbl_1 beziehen und die zweite auf tbl_2.
Das mit dem Office ist ja tragisch. Übrigens, ich hab mal durchgezählt, in meinem Outlook habe ich 15 Adressen eingerichtet Letztendlich habe ich so um die 40-50, aber einige nutze ich nur per Weiterleitung. So kann man zumindest Spam-Quellen besser eingrenzen na ja, und natürlich auch die Nutzung für bestimmte Zwecke wie Banking, Foren, Urlaub, Garten, Arbeit, Telefon/Internet und was auch immer differenzieren In meinem alten Vertrag bei 1&1 gab es damals 100 Adressen inklusive. Heute bekommt man eventuell nur noch eine und mehr nur gegen Aufpreis. Ich habe da gar keine mehr in den Angeboten von 1 & 1 gefunden, die eine gibt es zumindest bei IONOS ...
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)
23.04.2025, 23:23 (Dieser Beitrag wurde zuletzt bearbeitet: 23.04.2025, 23:23 von Ralf A.)
...würde Dir das auch so reichen?
Folder Path
oder lieber so?
Der sicherste Ansatz für einen Irrtum ist der Glaube, alles im Griff zu haben. Nur, weil ich den Recorder bedienen kann, macht mich das noch lange nicht zum Musiker.
24.04.2025, 07:51 (Dieser Beitrag wurde zuletzt bearbeitet: 24.04.2025, 09:00 von schauan.)
Moin Ralf,
wenn, dann eher die zweite Variante. Wie gesagt, diese Parametertabelle wird von Hand gefüllt. Aber wir müssen schauen, dass die Frage, wo das hinführen soll, nicht zu mehr Verwirrung als Verständnis führt.
Also, nochmal zum Urschleim Ich versuche mal, ein Beispiel zu konstruieren: Man könnte sich vorstellen, jedes Mitglied meiner Familie - das wären z.B. 4 - hat einen eigenen Ordner für Exceldateien. Da liegen nun bei jedem verschiedene Dateien, z.B. für Haushalt, Gesundheit, Urlaub, Arbeit, Bankkonten usw. Die Tabellen für Haushalt haben alle den gleichen Aufbau, für Gesundheit einen anderen, aber innerhalb Gesundheit auch wieder gleich usw.
Wenn ich nun Gesundheit nehme, gibt es darin mehrere intelligente Tabellen, z.B. - eine für die Ärzte, vielleicht mit Name, Art, Adressdaten usw. - eine für Krankenhausaufenthalte, z.B. wann (von / bis), wo, warum, behandelnder Arzt usw. - eine mit Tabletten, z.B. wann, Name, wogegen, verschreibungspflichtig, hilfreich usw. - eine mit Krankheiten, wann, welche, ...
Die intelligenten Tabellen in den 4 Dateien haben die gleichen Bezeichnungen, also z.B. tbl_Ärzte, tbl_Kliniken, tbl_Tabletten, tbl_Krankheiten. Allerdings haben die Dateien unterschiedliche Namen. Gesundheit_Mutti, Gesundheit_Vati. Wie das so ist, hören die Kids nicht und da gibt es dann Krankenakte_Kid1 und Ich_Mag_Keine_Ärzte_Kid2.
So, nun war unser Sohn beim Arzt und der fragte nach Erkrankungen in der Familie. Er bräuchte also aus den 4 Gesundheits-Dateien die tbl_Krankheiten von allen.
Er kommt dann mit den Fragen zu mir und ich schaue in meine "Zusammenfassung". Das ist im Prinzip das, was ich im Eingangsbeitrag als ersten Schritt beschrieben habe - "der Abruf müsste nun auf eine bestimmte erfolgen".
In 4 Wochen hört der Hausarzt meiner Frau auf. Wäre also erst mal nicht verkehrt, zu schauen, zu welchen Ärzten die anderen Familienmitglieder gehen. Sie bräuchte also die tbl_Ärzte von allen.
In meiner "Zusammenfassung" wäre es also gut, wenn ich von allen Familienmitgliedern alle 4 Tabellen hätte und nicht nur eine. Das wäre aus dem Eingangsbeitrag der Hinweis, dass die zweite Tabelle später auch noch übernommen wird - hier sind es nun 4...
Ich bräuchte dann für die 4 Zieltabellen 4 Abfragen auf die 4 Quelltabellen.
Die (intelligenten) Tabellennamen der Quelldateien tue ich entweder fest programmieren oder man macht es Variabel auf die Columns in der Parametertabelle. Deswegen auch die Tabellennamen als Daten und nicht als Überschriften der Parametertabelle.
Das i-Tüpfelchen wäre dann eben noch, die Überschriften aus den Quelldateien automatisch zu ermitteln, sodass ich dafür den Code nicht ändern muss. Dabei ist die Anzahl Spalten in den Tabellen unterschiedlich: Also z.B. wann, welche aus der tbl_Krankheiten oder Name, Art, Adressdaten usw. aus der tbl_Ärzte, ...
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)
24.04.2025, 08:05 (Dieser Beitrag wurde zuletzt bearbeitet: 24.04.2025, 08:06 von Ralf A.)
Moin,
ich hänge Dir mal die Datei an. Da kannst Du selbstaussuchen. Aber als Parametertabelle taugt die doch nur, wenn Du bei Doppelklick per VBA die Zeilennr. ausliest. Ansonsten müsstest Du ja tatsächlich hart codieren. Oder ich hab Dich falsch verstanden... Schau es Dir an... Den Pfad in A2 anpassen!
Der sicherste Ansatz für einen Irrtum ist der Glaube, alles im Griff zu haben. Nur, weil ich den Recorder bedienen kann, macht mich das noch lange nicht zum Musiker.
schaue ich mir gleich mal an. War gerade Brötchen holen und die ess ich noch schnell warm
In der Parametertabelle will ich nichts anklicken, ich will immer die Daten von allen dort aufgeführten Dateien und i.Tabellen haben. Es gibt für jeden Bereich - Haushalt, Auto - Gesundheit usw. jeweils eine Datei für die Zusammenfassung und darin je nach Lösung min eine Parameterdatei mit den für die Zusammenfassung vorgesehenen Dateien und i.Tabellen.
Wenn ich mal bei den Gesundheitsdaten bleibe - da wären es in meinem Beispiel für die Gesundheitsdaten-Zusammenfassung 4 Dateien mit 4 iT. Könnte sein, dass es in den Gesundheitsdateien weitere iT gibt, aber die interessieren nicht und falls doch, würde ich die Parameterabelle erweitern, eine Kopie der Abfrage erstellen und "nur" auf eine hinzugefügte 5. Spalte verweisen.
Das möchte ich dann ohne großen Aufwand z.B. auf die Auto-Daten anwenden und diese in eine zusammenfassende Auto-Datei holen. Da gibt es aber nur zwei Autos und entsprechend nur zwei Auto-Dateien. Da sind dann natürlich auch andere tbl_xxx drin mit anderen Inhalten, z.B. tbl_Verbrauch, tbl_werkstatt usw., vielleicht auch nur diese beiden.
Genau so dann mit den Banken. Dort gibt es vielleicht tbl_Giro, tbl_Depot und tbl_Festgeld.
Irgendwann kommen Enkel dazu oder Freund:innen und für eventuelle weitere Dateien und Verzeichnisse dann die entsprechenden Zeilen in den Parametertabellen. Vielleicht gefällt das den Enkeln und die wollen dann noch was für die Schule mit Fächern, Lehrern, Stundenplan ...
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)