Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Mehrere Tabellenbl. in ein Tabellenblatt kopieren

Mehrere Tabellenbl. in ein Tabellenblatt kopieren
22.06.2016 20:19:38
Hermann
Hallo zusammen,
ich benötige mal wieder eure Hilfe.
Ich habe eine Exceldatei. In der befinden sich ca.40 Arbeitsblätter die alle das gleiche Format nur andere Werte haben.
Ein Arbeitsblatt hat jeweils 3 Seiten. Der Bereich der 3 Seiten umfasst (A1:Y180)
Nun möchte ich die jeweils 3 Seiten aller Arbeitsblätter in ein neues Arbeitsblatt mit Namen Übersicht kopieren.
Das Arbeitsblatt "Übersicht" soll dann aus etwa 120 Seiten bestehen.
Also: Die 3 Seiten vom 1. A-Blatt in Zeile 1-180, die vom 2. a-Blatt in 181-360,...
Bis jetzt werden die Zeilen mit Hilfe einer Schleife kopiert. Das dauert aber sehr
Frage: Wie komme ich hier schneller zu dem Arbeitsblatt "Übersicht"?
Vielleicht mit einem Array? Aber damit komme ich nicht klar.
Ich weiß, daß es in diesem Forum sehr hilfsbereite Profis gibt.
Vielleicht kann mir mit meinem Problem jemand weiterhelfen.
Vielen Dank

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Mehrere Tabellenbl. in ein Tabellenblatt kopieren
24.06.2016 11:21:25
Michael
Hallo!
Soweit ich Dich verstanden habe, angenommen das Ziel-Blatt existiert bereits in der Mappe:
Sub a()
Const SRNG As String = "A1:Y180" 'Quell-Bereich, ggf. anpassen
Const TWS As String = "Übersicht" 'Ziel-Blatt, ggf. anpassen
Dim Wb As Workbook
Dim Ws As Worksheet
Dim aC
Dim rT As Range
'Quell-Bereich aller Blätter der Mappe (außer Ziel-Blatt)
'in Ziel-Mappe untereinander einfügen
'(ab Zeile 2 wenn Ziel-Blatt leer, sonst ab nächster freier Zeile)
Set Wb = ThisWorkbook
For Each Ws In Wb.Worksheets
If Not Ws.Name = TWS Then
aC = Ws.Range(SRNG).Value
With Wb.Worksheets(TWS)
Set rT = .Range("A" & .Cells(.Rows.Count, 1).End(xlUp).Row + 1)
rT.Resize(UBound(aC, 1), UBound(aC, 2)) = aC
End With
Erase aC
End If
Next Ws
End Sub
LG
Michael

Anzeige
AW: Mehrere Tabellenbl. in ein Tabellenblatt kopieren
26.06.2016 18:04:45
Hermann
Hallo Michael,
vielen Dank für deine Antwort. Ich möchte es nicht versäumen Dir mein Ergebnis mitzuteilen, das ich mit Deiner Hilfe in den letzten Tagen gebastelt habe. Ich kenne mich in VBA nicht aus und der eine oder andere wird vielleicht darüber schmunzeln. Aber es funktioniert.
Mir werden jetzt alle Tabellenblätter in ein neues Tabellenblatt (mit ALLEM z.B. Spaltenbreite, Formate, Buttons usw.)kopiert. Jetzt suche ich noch eine Lösung für die unterschiedlichen Kopfzeilen.
1. und 2.Seite: Kopfzeile_1, 3. Seite: Kopfzeile_2, 4. u. 5. Seite: Kopfzeile_1, 6.Seite: Kopfzeile_2 usw.
Daran werde ich vermutlich scheitern.
LG Hermann
Option Explicit
Sub Tabellenblätter_zusammenfassen()
Dim Wb As Workbook
Dim wsQuelle As Worksheet
Dim wsZiel As Worksheet
Dim i As Integer
Dim anz As Integer
'Dim nHBreaks As Integer
'Dim nVBreaks As Integer
'Dim nHPages As Integer
'Dim nVPages As Integer
'Dim nPagesTot As Integer
Set Wb = ThisWorkbook
For i = 1 To Worksheets.Count
If Worksheets(i).Name = "Aufstellung" Then
MsgBox "Das Tabellenblatt Aufstellung ist bereits vorhanden", vbCritical
Exit Sub
End If
Next
Set wsZiel = Worksheets.Add(before:=Worksheets(1))
wsZiel.Name = "Aufstellung"
With ActiveSheet.PageSetup                                'Seite einrichten
.LeftMargin = Application.InchesToPoints(0.354330708661417)
.RightMargin = Application.InchesToPoints(0)
.TopMargin = Application.InchesToPoints(0.511811023622047)
.BottomMargin = Application.InchesToPoints(0)
.HeaderMargin = Application.InchesToPoints(0.118110236220472)
.FooterMargin = Application.InchesToPoints(0)
End With
For anz = 1 To Worksheets.Count - 1
' -1, weil das Blatt "Aufstellung" (liegt an 1.Stelle) nicht mitgezählt werden soll.
Set wsQuelle = Worksheets(anz + 1)
' anz+1, weil mit dem ws das an 2.Stelle liegt gestartet wird.
wsQuelle.Rows("1:180").Copy
With wsZiel.Cells((anz * 180) - 179, 1)
.PasteSpecial Paste:=xlPasteColumnWidths                'Spaltenbreite übertragen
.PasteSpecial Paste:=xlPasteAllUsingSourceTheme         'ALLES einfügen mit Quelldesign
End With
Next anz
Application.CutCopyMode = False
'Zwischenablage leeren und blinkenden Rahmen auflösen
wsZiel.Cells(1, 1).Select

Anzeige
AW: Mehrere Tabellenbl. in ein Tabellenblatt kopieren
27.06.2016 08:12:35
Michael
Hallo Hermann!
das ich mit Deiner Hilfe in den letzten Tagen gebastelt habe
Freut mich, dass Du Dir was gebastelt hast, aber von meinem Code ist da nichts enthalten ;-).
Du wolltest ursprünglich einen Code, der möglichst effizient, zB unter Nutzung eines Arrays, den immer gleichen Bereich aller Blätter einer Mappe in ein bestimmtes Blatt dieser Mappe untereinander kopiert. Du arbeitest jetzt wieder mit einer Zähl-Schleife - allerdings hast Du ursprünglich auch nichts von mit ALLEM z.B. Spaltenbreite, Formate, Buttons usw erwähnt.
Bzgl. der Kopfzeilen: Unterschiedliche Kopfzeilen sind in Excel, ungleich Word, nicht über das entsprechende Menü zu erreichen. Schreib die Kopfzeilen daher direkt ins Blatt.
LG
Michael
Anzeige

333 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige