VBA: Kombinieren Sie Excel-Dateien aus mehreren Ordnern in einem Arbeitsblatt, basierend auf den gleichen ersten 4 Buchstaben im Dateinamen.xlsx
Beschreibung:
Es gibt Dateien mit einer Kunden-ID von 001-100. Jeder Kunde hat 3 verschiedene Excel-Berichte (### Report1-3), die in verschiedenen Ordnern (Folders1-3) generiert werden.
Beispiel: Ordner 1 enthält:
001 Report1.xlsx
...
100 Report1.xlsx
Ordner 2 enthält:
001 Report2.xlsx
...
100 Report2.xlsx
Ordner 3 enthält:
001 Report3.xlsx
...
100 Report3.xlsx
Jede dieser Dateien enthält nur ein Blatt mit Werten (keine Formeln oder PivotTables). Jeder Bericht 1, Bericht 2 und Bericht 3 hat einen anderen Satz von Spalten/Zeilen.
Frage:
Ich möchte für jede Kunden-ID „### “ eine Arbeitsmappe erstellen und die Berichte als Blätter haben (### Bericht1) (### Bericht 2) (### Bericht 3) (Alle gewünschten Dokumente, die in einer Arbeitsmappe kombiniert werden sollen, haben die ersten vier Zeichen am Anfang des Namens jedes Berichts)
Zum Beispiel für Kunde: 001
Erstellen Sie eine Arbeitsmappe „001 AllReports.xlsx“, die Folgendes enthält:
Blatt 1 = 001 Report1
Blatt 2 = 001 Report2
Blatt 3 = 001 Report3
Wechseln Sie dann zur Kunden-ID 002 und machen Sie dasselbe.
Bitte lassen Sie mich wissen, wenn noch etwas geklärt werden muss. Danke, das weiß ich wirklich zu schätzen!
Einige Anmerkungen/Gedanken:
Ich dachte daran, eine Merger-Makrovorlage mit 3 Feldern zu erstellen. Dort fülle ich die Pfade Ordner 1, dann Ordner 2 und Ordner 3 aus und führe dann die Dokumente basierend auf der Kunden-ID zusammen.
Um grundlegende Dateien zusammenzuführen, habe ich mich vorher auf Folgendes gestützt: https://docs.microsoft.com/en-us/office/vba/api/excel.worksheet.copy
Ich war auch neugierig, dies mit einer Abfrage zu tun, aber da die Spalten in Bericht 1–3 nicht konsistent sind, bin ich nicht sicher, ob dies überhaupt eine Option wäre.
Dieses Beispiel/VBA ist gut, wenn sich alle Dateien im selben Ordner befinden: Es wäre toll, die verschiedenen Ordnerpfade hinzuzufügen und sie auf den Namen zu basieren, die die Kunden-ID ### enthalten.
Sub ConslidateWorkbooks()
'Created by Sumit Bansal from https://trumpexcel.com
Dim FolderPath As String
Dim Filename As String
Dim Sheet As Worksheet
Application.ScreenUpdating = False
FolderPath = Environ("userprofile") & "\Desktop\Test\"
Filename = Dir(FolderPath & "*.xls*")
Do While Filename <> ""
Workbooks.Open Filename:=FolderPath & Filename, ReadOnly:=True
For Each Sheet In ActiveWorkbook.Sheets
Sheet.Copy After:=ThisWorkbook.Sheets(1)
Next Sheet
Workbooks(Filename).Close
Filename = Dir()
Loop
Application.ScreenUpdating = True
End Sub