Hallo auch von mir,
ich würde ohne VBA-Kenntnisse auf eine Umsetzung mit VBA verzichten und den einfachen Weg über PowerQuery (also Daten>Abrufen und Transformieren) gehen.
Dazu kannst du wie folgt vorgehen:
1. Daten>Abrufen und transformieren>Neue Abfrage>Aus Datei>Aus Ordner>OK
2. Wenn alle Dateien gleich aufgebaut sind: Kombinieren
--> Das erzeugt einige Abfragen, Parameter und Funktionen in Powerquery, aber das Ergebnis ist schnell erreicht.
Alternativ kannst du einen alternativen Schritt 2 wählen:
2. Bearbeiten klicken
3. ein ordentliches Filterkriterium für die Dateinamen wählen Dropdownpfeil in der Überschrift, Textfilter... ist gleich .xlsx (Case-Sensitiv!;zum Beispiel: [Extension] = ".xlsx")
4. Nur die Spalten Content und Name beibehalten (die spalten Markieren, rechte Maustaste -> Andere Spalten entfernen
5. Neue benutzerdefinierte Spalte hinzufügen, die den Dateiinhalt als Exceldatei interpretiert (Ribbon Spalte hinzufügen > Benutzerdefinierte Spalte > Benutzerdefinierte Spaltenformel :=Excel.Workbook([Content])
6. nur die Spalten Content und Benutzerdefiniert behalten (siehe 4.)
7. Den inhalt der Spalte Benutzerdefiniert expandieren (Auf den Doppelpfeil in der Überschrift klicken, Name und Data als Spalten auswählen, Ursprünglichen Spaltennamen als Präfix verwenden)
8. Den Inhalt der neuen Spalte Benutzerdefiniert.Data expandieren (jetzt kann die Option Ursprünglichen Spaltennamen als Präfix verwenden raus)
9. Die richtigen Datentypen für die Spalten festlegen (mindestens ein Numerischer Wert; z. B. mit rechter Maustaste: Summenzeilen und wiederholte überschriften werden dadurch zu Fehlerwerten)
10. Fehlerwerte ausfiltern (Rechtemaustaste auf numerische Spalte > Fehler entfernen)
--> Fertig (gegebenenfalls kannst du vor Schritt 9 noch die Überschriften einmal hochsetzen (Ribbon Start-> Erste Zeile als Überschriften verwenden)
Das ganze sieht dann so aus und lässt sich auf Knopfdruck aktualisieren:
Code:
let
Quelle = Folder.Files("C:\Daten\PQ\Multiimport"),
#"Gefilterte Zeilen" = Table.SelectRows(Quelle, each [Extension] = ".xlsx"),
#"Andere entfernte Spalten" = Table.SelectColumns(#"Gefilterte Zeilen",{"Content", "Name"}),
#"Hinzugefügte benutzerdefinierte Spalte" = Table.AddColumn(#"Andere entfernte Spalten", "Benutzerdefiniert", each Excel.Workbook([Content])),
#"Andere entfernte Spalten1" = Table.SelectColumns(#"Hinzugefügte benutzerdefinierte Spalte",{"Name", "Benutzerdefiniert"}),
#"Erweiterte Benutzerdefiniert" = Table.ExpandTableColumn(#"Andere entfernte Spalten1", "Benutzerdefiniert", {"Name", "Data"}, {"Benutzerdefiniert.Name", "Benutzerdefiniert.Data"}),
#"Erweiterte Benutzerdefiniert.Data" = Table.ExpandTableColumn(#"Erweiterte Benutzerdefiniert", "Benutzerdefiniert.Data", {"Column1", "Column2"}, {"Benutzerdefiniert.Data.Column1", "Benutzerdefiniert.Data.Column2"}),
#"Geänderter Typ" = Table.TransformColumnTypes(#"Erweiterte Benutzerdefiniert.Data",{{"Benutzerdefiniert.Name", type text}, {"Benutzerdefiniert.Data.Column1", type text}, {"Benutzerdefiniert.Data.Column2", type number}}),
#"Entfernte Fehler" = Table.RemoveRowsWithErrors(#"Geänderter Typ", {"Benutzerdefiniert.Data.Column2"})
in
#"Entfernte Fehler"
Viele Grüße
derHöpp