Mehrere Exceldateien zu einer Excel Datei zusammenfassen - extended
@bastla
Hier also noch mal neu. Danke für deinen Tipp ;)
Hallo,
da mein Range dynamisch ist, hab ich etwas weiter gesucht und folgendes gefunden:
Sub Dateien_in_eine_Tabelle_zusammenfuehren()
'(C) Ramses
Dim Datei As String
Dim Arbeitsmappe As String
Dim Pfad As String
Pfad = "d:\workarea\"
Datei = Dir(Pfad & "*.xls")
Application.ScreenUpdating = False
'Active Mappe
Arbeitsmappe = ActiveWorkbook.Name
Do While Datei <> ""
'Öffnet eine Datei
Workbooks.Open Datei
'Kopiert von den Zeilen 6 bis zum Ende
'in die aktive Mappe und fügt sie jeweils unten an
Rows("6:" & ActiveWorkbook.ActiveSheet.Range("A65536").End(xlUp).Row).Copy _
Destination:=Workbooks(Arbeitsmappe).ActiveSheet.Range("A65536").End(xlUp).Offset(1, 0)
'Schliesst die geöffnete Datei
ActiveWorkbook.Close False
'Prüft für die nächste Datei
Datei = Dir()
Loop
Application.ScreenUpdating = True
End Sub
Hierbei steigt leider der Debugger in der Zeile "Workbooks.Open Datei" mit folgender Fehlermeldung aus:
Laufzeitfehler '1004': 'file1.xls' wurde nicht gefunden. Überprüfen Sie die Rechtschreibung des Dateinamens und überprüfen Sie, ob der Speicherort der Datei korrekt ist. Ist insofern kurios, da das Makro ja bereits im richtigen Verzeichnis den Namen der ersten Datei mit in der Fehlermeldung ausgibt.
Gruß
bolshi
Hier also noch mal neu. Danke für deinen Tipp ;)
Hallo,
da mein Range dynamisch ist, hab ich etwas weiter gesucht und folgendes gefunden:
Sub Dateien_in_eine_Tabelle_zusammenfuehren()
'(C) Ramses
Dim Datei As String
Dim Arbeitsmappe As String
Dim Pfad As String
Pfad = "d:\workarea\"
Datei = Dir(Pfad & "*.xls")
Application.ScreenUpdating = False
'Active Mappe
Arbeitsmappe = ActiveWorkbook.Name
Do While Datei <> ""
'Öffnet eine Datei
Workbooks.Open Datei
'Kopiert von den Zeilen 6 bis zum Ende
'in die aktive Mappe und fügt sie jeweils unten an
Rows("6:" & ActiveWorkbook.ActiveSheet.Range("A65536").End(xlUp).Row).Copy _
Destination:=Workbooks(Arbeitsmappe).ActiveSheet.Range("A65536").End(xlUp).Offset(1, 0)
'Schliesst die geöffnete Datei
ActiveWorkbook.Close False
'Prüft für die nächste Datei
Datei = Dir()
Loop
Application.ScreenUpdating = True
End Sub
Hierbei steigt leider der Debugger in der Zeile "Workbooks.Open Datei" mit folgender Fehlermeldung aus:
Laufzeitfehler '1004': 'file1.xls' wurde nicht gefunden. Überprüfen Sie die Rechtschreibung des Dateinamens und überprüfen Sie, ob der Speicherort der Datei korrekt ist. Ist insofern kurios, da das Makro ja bereits im richtigen Verzeichnis den Namen der ersten Datei mit in der Fehlermeldung ausgibt.
Gruß
bolshi
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 88236
Url: https://administrator.de/forum/mehrere-exceldateien-zu-einer-excel-datei-zusammenfassen-extended-88236.html
Ausgedruckt am: 04.04.2025 um 16:04 Uhr
15 Kommentare
Neuester Kommentar
Hallo bolshi!
Versuch es mit folgender Variation des Scripts von Ramses:
Nur zur Sicherheit: Deine Zieldatei sollte nicht im selben Pfad wie die einzelnen Quelldateien liegen ...
Grüße
bastla
P.S.: Bitte zum Posten von Scripts Formatierungen in den Beiträgen setzen ...
Versuch es mit folgender Variation des Scripts von Ramses:
Sub Dateien_in_eine_Tabelle_zusammenfuehren()
'(C) Ramses
Pfad = "d:\workarea\" 'Am Ende einen "\" verwenden!
Datei = Dir(Pfad & "*.xls")
Application.ScreenUpdating = False
'Aktuelle Tabelle
Set Sammeltabelle = ActiveWorkbook.ActiveSheet
Do While Datei <> ""
'Öffnet eine Datei
Workbooks.Open Pfad & Datei
'Kopiert von den Zeilen 6 bis zum Ende
'in die aktive Mappe und fügt sie jeweils unten an
ActiveWorkbook.ActiveSheet.Rows("6:" & ActiveWorkbook.ActiveSheet.Range("A65536").End(xlUp).Row).Copy _
Destination:=Sammeltabelle.Range("A65536").End(xlUp).Offset(1, 0)
'Schliesst die geöffnete Datei
ActiveWorkbook.Close False
'Prüft für die nächste Datei
Datei = Dir()
Loop
Application.ScreenUpdating = True
End Sub
Grüße
bastla
P.S.: Bitte zum Posten von Scripts Formatierungen in den Beiträgen setzen ...
Hallo bolshi!

"A65536" musst Du auf jeden Fall ändern, da von dieser Zelle aus nach oben die erste nicht leere Zelle gesucht wird.
Ein Problem wirst Du bekommen, wenn Du versuchst, mehrere der beschriebenen großen Tabellen in einer einzigen zusammenzufassen, da Dir so auch bei Excel 2007 die Zeilen ausgehen (die Million ist dann schnell voll) ...
Grüße
bastla
Ich lese die Dateien in Excel 2007 ein. Da ist meines Wissens bei 65536 noch nicht Schluss.
Meines Wissens geht es bis Zeile 1.048.576 - kannst Du aber leicht überprüfen: Einfach einmal eine Zelle unterhalb Deiner letzten Zeile markieren und Strg + Pfeil unten drücken Ist das hier in dem Fall ein Problem? Muss ich i.d.F. den Range entsprechend auf 800 tausend setzen?
Vermutlich lautet die Antwort zweimal "Ja" ..."A65536" musst Du auf jeden Fall ändern, da von dieser Zelle aus nach oben die erste nicht leere Zelle gesucht wird.
Ein Problem wirst Du bekommen, wenn Du versuchst, mehrere der beschriebenen großen Tabellen in einer einzigen zusammenzufassen, da Dir so auch bei Excel 2007 die Zeilen ausgehen (die Million ist dann schnell voll) ...
Grüße
bastla
Hallo bolshi!

Abgesehen davon, dass auch bei der ersten "Range"-Angabe im Hinblick auf Deine großen Tabellen "A1000000" angebracht wäre, sehe ich eigentlich nichts Störendes ...
Tritt der Fehler bereits bei der ersten Datei auf? Falls nicht, wie "voll" ist die Sammeltabelle bereits?
Zum Eingrenzen des Fehlers (kann sich ja auf Quelle oder Ziel des Kopiervorganges beziehen) könntest Du einmal die zu kopierenden Zeilen jeweils nur markieren lassen - falls das funktioniert, liegt das Problem bei der Sammeltabelle.
Für diesen Test musst Du nicht viel ändern:
Grüße
bastla
Siehst du irgendwas auffälliges?
Du meinst vermutlich nicht die Tatsache, dass Du keine < code>-Formatierung verwendet hast ... Abgesehen davon, dass auch bei der ersten "Range"-Angabe im Hinblick auf Deine großen Tabellen "A1000000" angebracht wäre, sehe ich eigentlich nichts Störendes ...
Tritt der Fehler bereits bei der ersten Datei auf? Falls nicht, wie "voll" ist die Sammeltabelle bereits?
Zum Eingrenzen des Fehlers (kann sich ja auf Quelle oder Ziel des Kopiervorganges beziehen) könntest Du einmal die zu kopierenden Zeilen jeweils nur markieren lassen - falls das funktioniert, liegt das Problem bei der Sammeltabelle.
Für diesen Test musst Du nicht viel ändern:
ActiveWorkbook.ActiveSheet.Rows("1:" & ActiveWorkbook.ActiveSheet.Range("A1000000").End(xlUp).Row).Select _
'Destination:=Sammeltabelle.Range("A1000000").End(xlUp).Offset(1, 0)
Grüße
bastla
Hallo bolshi!
Was hat denn der Versuch mit dem geänderten Code ("...Select") ergeben?
Grüße
bastla
kannst du mit dem Fehlercode irgendwas anfangen?
Unter Excel 2003 (habe gerade keine 2007er Version zur Hand) wäre der Fehler 400 "Formular wird bereits angezeigt und kann daher nicht gebunden dargestellt werden" bezogen auf ein UserForm und passt hier also überhaupt nicht ...Was hat denn der Versuch mit dem geänderten Code ("...Select") ergeben?
Grüße
bastla