Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1216to1220
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Tabellenblätter kopieren

Tabellenblätter kopieren
Jürgen
Hallo Leute,
ich benötige Hilfe bei folgendem Problem:
Ich möchte aus einer Arbeitsmappe "alt" jedes 2. Tabellenblatt in eine leere (bestehende) Arbeitsmappe "neu" kopieren.
Die "Zusammenfassung" funktioniert bereits, jedoch nur in der Mappe "alt"
Ich möchte das Makro aus der Mappe "neu" aufrufen und dort auch die Inhalte Speichern.
Alte Inhalte löschen.
Weiter sollen jeweils zu Beginn der Daten der Name des Tabellenblattes aus "alt" erscheinen, sonst verliere ich den Überblick.
Was ich bis jetzt habe:
Sub zusammenfassen()
Dim Zeile&, letzteZ&
'Auswertungsblatt einfügen
With Worksheets.Add
.Name = "Zusammenfassung"
.Move Before:=Worksheets(1)
.Range("A1:F1") = Sheets(2).Range("A1:F1")
End With
'Von Blatt 2 bis letzem Blatt zusammenfassen
For i = 2 To Worksheets.Count Step 2
With Worksheets(i)
letzteZ = .Cells(Rows.Count, 2).End(xlUp).Row
Zeile = Worksheets("Zusammenfassung").Cells(Rows.Count, 2).End(xlUp).Row + 1
.Range(.Cells(1, 1), .Cells(letzteZ, 24)).Copy _
Worksheets("Zusammenfassung").Cells(Zeile, 1)
End With
Next
End Sub
Wie muss der Text ergänzt werden?
Vielen Dank
Jürgen
PS: der Text ist hier aus dem Forum

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
Daten aus Tabellenblättern zusammenfassen
17.06.2011 19:27:16
Erich
Hi Jürgen,
probier mal (ungetestet):

Option Explicit         ' IMMER zu empfehlen
Sub ZusammenfassenInNeu()
Dim lngZ As Long, lngQ As Long, lngB As Long
ThisWorkbook.Activate         ' Mappe "neu"
With Worksheets.Add           ' Auswertungsblatt einfügen
.Name = "Zusammenfassung"
.Move Before:=Worksheets(1)
End With
' hier evtl. andere Blätter löschen?
With Workbooks("alt.xlsm")    ' Mappe "alt"
Cells(1, 1).Resize(, 6) = _
.Worksheets(2).Cells(1, 1).Resize(, 6).Value
lngZ = 1
'   von Blatt 1 bis letzem Blatt zusammenfassen
For lngB = 1 To .Worksheets.Count Step 2
With .Worksheets(lngB)
lngQ = .Cells(.Rows.Count, 2).End(xlUp).Row
Cells(lngZ, 1).Resize(lngQ, 24) = _
.Cells(1, 1).Resize(lngQ, 24).Value
lngZ = lngZ + lngQ
End With
Next lngB
End With
End Sub
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: Daten aus Tabellenblättern zusammenfassen
17.06.2011 21:52:22
jürgen
Hallo Erich,
das Kopieren klappt.
Statt des Namens der Tabellenblätter steht da nur eine 18.
Wo wird der Name Des Tabellenblattes übergeben?
Danke für den Versuch
Jürgen
neuer Versuch, mit Korrekturen
18.06.2011 08:57:10
Erich
Hi Jürgen,
ja, das war nur ein untauglicher Versuch. Die Blattnamen in Spalte A hatte ich glatt vergessen. Sorry!
(Woher kommt wohl die 18?)
Hier eine neue (und ein wenig getestete) Version:

Option Explicit         ' IMMER zu empfehlen
Sub ZusammenfassenInNeu()
Dim lngZ As Long, lngQ As Long, lngB As Long
ThisWorkbook.Activate                        ' Mappe "neu"
With Worksheets.Add(Before:=Worksheets(1))   ' Auswertungsblatt
.Name = "Zusammenfassung"
End With
' hier evtl. andere Blätter löschen?
With Workbooks("alt.xlsm")                   ' Mappe "alt"
Cells(1, 1) = "Blattname"
Cells(1, 2).Resize(, 6) = _
.Worksheets(2).Cells(1, 1).Resize(, 6).Value
lngZ = 2
'   von Blatt 1 bis letzem Blatt zusammenfassen
For lngB = 1 To .Worksheets.Count Step 2
With .Worksheets(lngB)
lngQ = .Cells(.Rows.Count, 2).End(xlUp).Row
Cells(lngZ, 1).Resize(lngQ) = .Name
Cells(lngZ, 2).Resize(lngQ, 24) = _
.Cells(1, 1).Resize(lngQ, 24).Value
lngZ = lngZ + lngQ
End With
Next lngB
End With
Columns.AutoFit
End Sub
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: neuer Versuch, mit Korrekturen
18.06.2011 17:50:49
Jürgen
Hallo Erich,
habe die 18 gefunden!
Das kommt davon, wenn mann Zahlen mit Benutzerdefinierten Zellformaten belegt.
Statt Text erscheint dann nur eine Zahl.
Wie kommt jetzt der Blattname als "Überschrift" vor den einzufügenden Text?
Anstelle von Spalte 1.
Funktioniert sonst einwandfrei.
Danke
Jürgen
Blattname woanders
18.06.2011 18:45:30
Erich
Hi Jürgen,
da gibt es eine einfache Erklärung: Ich habe das so programmiert - deinen Satz
"sollen jeweils zu Beginn der Daten der Name des Tabellenblattes aus "alt" erscheinen" so verstanden.
"zu Beginn der Daten" ist nicht wirklich klar und eindeutig.
Hier die Codezeile, die die Namen einträgt: Cells(lngZ, 1).Resize(lngQ) = .Name
Vielleicht kannst du die letzte Version, die den Quellblattnamen in Spalte A jeder Zeile schreibt, ja auch mal gebrauchen.
Hier eine Version, die jeweils über den Daten eines Blattes in Spalte A
den Blattnamen schreibt:

Sub ZusammenfassenInNeu2()
Dim lngZ As Long, lngQ As Long, lngB As Long
ThisWorkbook.Activate                        ' Mappe "neu"
With Worksheets.Add(Before:=Worksheets(1))   ' Auswertungsblatt
.Name = "Zusammenfassung"
End With
' hier evtl. andere Blätter löschen?
With Workbooks("alt.xlsm")                   ' Mappe "alt"
Cells(1, 1).Resize(, 6) = _
.Worksheets(2).Cells(1, 1).Resize(, 6).Value
lngZ = 2
'   von Blatt 1 bis letzem Blatt zusammenfassen
For lngB = 1 To .Worksheets.Count Step 2
With .Worksheets(lngB)
lngQ = .Cells(.Rows.Count, 2).End(xlUp).Row
Cells(lngZ, 1) = .Name              ' Blattname
Cells(lngZ + 1, 1).Resize(lngQ, 24) = _
.Cells(1, 1).Resize(lngQ, 24).Value
lngZ = lngZ + lngQ + 1
End With
Next lngB
End With
Columns.AutoFit
End Sub
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: Blattname woanders
18.06.2011 20:26:12
Jürgen
Danke Erich,
da war´s!
Bis zum nächsten Problem
Jürgen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige