Wie kombiniere ich mehrere excel-arbeitsmappen mit vba?
Um mehrere Excel-Arbeitsmappen zu kombinieren, müssen Sie Code verwenden, mit dem Sie auswählen können, welche Dateien Sie kombinieren möchten, oder Sie können auf einen bestimmten Pfad verweisen und alle Excel-Dateien in der aktuellen Arbeitsmappe kombinieren.
VBA kombiniert mehrere Arbeitsmappen
Sie können den folgenden Code verwenden, der den Speicherort verwendet, den ich in der Pfadvariablen angegeben habe (einen Ordner auf meinem Systemdesktop).
Dim Path As String Dim Filename As String Dim Sheet As Worksheet Path = "C:UsersDellDesktopsample-data" Filename = Dir(Path & "*.xlsx") Do While Filename <> "" Workbooks.Open Filename:=Path & Filename, ReadOnly:=True For Each Sheet In ActiveWorkbook.Sheets Sheet.Copy After:=ThisWorkbook.Sheets(1) Next Sheet Workbooks(Filename).Close Filename = Dir() Loop
Schritte zum Kombinieren von Excel-Dateien mit VBA
- Öffnen Sie den Visual Basic-Editor (stellen Sie sicher, dass Sie die Registerkarte „Entwickler“ aktivieren, wenn Sie sie bereits in der Multifunktionsleiste haben).
- Suchen Sie anschließend die aktuelle Arbeitsmappe im Projektfenster (Strg + R) und fügen Sie ein neues Modul ein.
- Im Modul wird ein Codefenster angezeigt (doppelklicken Sie darauf), in das Sie den vorhandenen Code (so wie er ist) einfügen müssen.
- Von hier aus müssen Sie den Wert der Pfadvariablen mit dem Ordnerspeicherort ändern, in dem sich alle Excel-Dateien befinden, die Sie kombinieren möchten.
- Führen Sie am Ende den Code aus und Sie erhalten alle Arbeitsblätter in der Arbeitsmappe in der aktuellen Datei.
Nützliche Links: Ausführen eines Makros – Makrorecorder – Visual Basic Editor – Handbuch zu persönlichen Makros
Dieser Code öffnet jede Datei einzeln, kopiert jedes Arbeitsblatt einzeln und fügt es in die aktuelle Datei mit demselben Namen ein. Hier ist derselbe Code, aber der Bildschirm wird zu Beginn auf „false“ aktualisiert, um alles im Backend auszuführen.
Dim Path As String Dim Filename As String Dim Sheet As Worksheet Application.ScreenUpdating = False Path = "C:UsersDellDesktopsample-data" Filename = Dir(Path & "*.xlsx") Do While Filename <> "" Workbooks.Open Filename:=Path & 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
Hinweis: Wenn Sie erfahren möchten, wie Sie Daten aus mehreren Arbeitsmappen in einer einzigen Tabelle kombinieren, lesen Sie unbedingt diese Anleitung.