VBA Kombinieren von Excel-Dateien aus mehreren Ordnern in einem Arbeitsblatt, basierend auf dem gleichen Dateinamen

VBA Kombinieren von Excel-Dateien aus mehreren Ordnern in einem Arbeitsblatt, basierend auf dem gleichen Dateinamen

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

verwandte Informationen