967 Aufrufe
Gefragt in Tabellenkalkulation von felixso Einsteiger_in (79 Punkte)
Hallo,

habe eine Excel-Datei mit ca. 200 Tabellenblättern.
In allen Tabellenblättern sind ab Zeile 10 variabel viele Datensätze fortlaufend eingetragen.
Nun möchte ich gerne die Daten aus allen Tabellenblättern in eine neue Tabelle untereinander kopieren.
Dies müsste sich doch mit einer Schleife erledigen lassen, was mir aber leider nicht gelingt.
Kann mir jemand erklären, wie die Schleife aufgebaut sein muss?
Mein "Versuch" war folgender:

Sub KopierenallerBereiche()
Dim Blatt1 As Worksheet
Dim i As Integer
Set Blatt1 = Worksheets(2)
For i = 2 To Worksheets.Count
Worksheets(i).UsedRange.Copy Destination:=Blatt1.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0)
Next i
End Sub

Es funktioniert leider nicht und es kopiert lediglich den gesamten Bereich.
Für hilfreiche Anmerkungen wäre ich sehr dankbar.

3 Antworten

0 Punkte
Beantwortet von m-o Profi (22.7k Punkte)
Hallo,

das folgende Makro kopiert ab Zeile 10 die Daten in das Arbeitsblatt Nr. 1 (musst du ggf. anpassen):

Sub kopieren_ab_Zeile10()

Dim i As Integer

For i = 2 To Worksheets.Count

With Sheets(i)
.Range(.Cells(10, 1), .Cells(.UsedRange.SpecialCells(xlCellTypeLastCell).Row, .UsedRange.SpecialCells(xlCellTypeLastCell).Column)).Copy Destination:=Worksheets(1).Cells(Rows.Count, 1).End(xlUp).Offset(1, 0)
End With

Next i

End Sub


Gruß

M.O.
0 Punkte
Beantwortet von felixso Einsteiger_in (79 Punkte)
Hallo M. O.,

vielen Dank für die Hilfe.
Leider geht das noch nicht.
Ich erhalte bei Testen des Makros eine Fehlermeldung für die Zeile

.Range(.Cells(10, 1), .Cells(.UsedRange.SpecialCells(xlCellTypeLastCell).Row, .UsedRange.SpecialCells(xlCellTypeLastCell).Column)).Copy Destination:=Worksheets("1").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0)


Laufzeitfehler 1004
Die Copy-Methode des Range-Objektes kann nicht durchgeführt werden.

Schaue in die Tabelle "1", sind dort die Werte für die erste der über hundert Tabellen eingefügt, für den Rest leider nicht...
Liegt es an der Bezeichung des Tabellenblatts in die die Werte kopiert werden?
0 Punkte
Beantwortet von m-o Profi (22.7k Punkte)
Hallo Felix,

bei meinen Test läuft das Makro einwandfrei, auch mit dem von dir geänderten Blattnamen.

Probier mal das folgende Version:

Sub kopieren_ab_Zeile10()

Dim i As Integer

For i = 1 To Worksheets.Count

If Worksheets(i).Name <> "1" Then

With Sheets(i)
.Range(.Cells(10, 1), .Cells(.UsedRange.SpecialCells(xlCellTypeLastCell).Row, .UsedRange.SpecialCells(xlCellTypeLastCell).Column)).Copy Destination:=Worksheets("1").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0)
End With

End If

Next i

End Sub


Gruß

M.O.
...