Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Alle Tabellenblätter schnell per vba kopieren

Alle Tabellenblätter schnell per vba kopieren
27.05.2004 14:28:42
stefan
Hallo Zusammen,
habe mangels vba-kenntnisse folgendes Problem:
wie kann ich per vba ALLE Tabellenblätter einer Datei A in die Datei B kopieren.
ich möchte das gerne ohne select lösen, weil die Datei sehr viele Blätter hat (also ca. 30 - die Anzahl der Blätter variiert zudem)
Also aus Datei A die Blätter A1, A2, --- A30
in die Datei B vor das Blatt B1 kopieren.
Wäre nett für eure Hilfe !
Übrigens...tolles Forum. Man lernt sehr viel bei euch !
DANKE !!!!!
Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Alle Tabellenblätter schnell per vba kopieren
Remo
Hallo Stefan
Anstelle von "Mappe1" musst du den Namen von Datei B eingeben.
Gruss Remo

Sub Makro1()
For i = Application.Worksheets.Count To 1 Step -1
ThisWorkbook.Worksheets(i).Copy Before:=Workbooks("Mappe1").Worksheets(1)
Next i
End Sub

Anzeige
AW: Alle Tabellenblätter schnell per vba kopieren
Stefan
Hallo Remo,
vielen Dank.
noch ne Frage.
So wie ich das sehe kopiert er jetzt alle Blätter einzeln bis die Schleife
beendet ist.
Geht das auch mit einem mal ?
Also alle Blätter auswählen und dann nur einmal rüberkopieren um Geschwindigkeit zu erreichen ?
Stefan
AW: Alle Tabellenblätter schnell per vba kopieren
Remo
Irgendwie, wahrscheinlich mit einem Array würde es schon funktionieren.
Bin aber echt nicht sicher, ob die ganze Sache dadurch beschleunigt würde.
Gruss Remo
Anzeige
AW: Alle Tabellenblätter schnell per vba kopieren
stefan
danke !
AW: Alle Tabellenblätter schnell per vba kopieren
27.05.2004 17:50:39
Well
Worksheets.Copy Workbooks("DeinMappenName.xls").Sheets(1)
wenn auch andere blätter also auch diagrammblätter
Anstatt worksheets sheets
Fare Well
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Alle Tabellenblätter schnell per VBA kopieren


Schritt-für-Schritt-Anleitung

Um alle Tabellenblätter einer Excel-Datei (Datei A) in eine andere Datei (Datei B) zu kopieren, kannst du folgenden VBA-Code verwenden. Dieser Code dupliziert die Excel-Reiter ohne die Verwendung von Select, was besonders nützlich ist, wenn du viele Blätter hast.

  1. Öffne die Excel-Datei A, aus der du die Blätter kopieren möchtest.
  2. Drücke ALT + F11, um den VBA-Editor zu öffnen.
  3. Füge ein neues Modul hinzu: Rechtsklick auf "VBAProject (deineDatei.xlsx)" > Einfügen > Modul.
  4. Kopiere und füge den folgenden Code in das Modul ein:
Sub Makro1()
    For i = Application.Worksheets.Count To 1 Step -1
        ThisWorkbook.Worksheets(i).Copy Before:=Workbooks("Mappe1").Worksheets(1)
    Next i
End Sub
  1. Ändere "Mappe1" in den Namen deiner Ziel-Datei (Datei B).
  2. Schließe den VBA-Editor und führe das Makro aus.

Mit diesem Makro kannst du alle Tabellenblätter effizient kopieren.


Häufige Fehler und Lösungen

  • Fehler: "Laufzeitfehler 9: Index außerhalb des gültigen Bereichs"

    • Lösung: Stelle sicher, dass der Name der Datei B genau korrekt ist und dass die Datei geöffnet ist.
  • Fehler: Blätter werden nicht korrekt kopiert

    • Lösung: Überprüfe, ob die Quell-Datei die Blätter enthält und ob du die richtige Reihenfolge im Code verwendest.

Alternative Methoden

Falls du eine andere Methode bevorzugst, kannst du auch die folgende Zeile verwenden, um alle Blätter auf einmal zu kopieren:

Worksheets.Copy Before:=Workbooks("DeinMappenName.xls").Sheets(1)

Diese Methode kopiert alle Tabellenblätter gleichzeitig und ist eine gute Option, wenn du keine speziellen Anforderungen an die Auswahl der Blätter hast.


Praktische Beispiele

Wenn du beispielsweise nur bestimmte Tabellenblätter basierend auf bestimmten Bedingungen kopieren möchtest, könnte ein Code wie dieser hilfreich sein:

Sub KopiereAusgewaehlteBlätter()
    Dim Blatt As Worksheet
    For Each Blatt In ThisWorkbook.Worksheets
        If Blatt.Name Like "A*" Then ' Kopiert nur Blätter, deren Name mit "A" beginnt
            Blatt.Copy Before:=Workbooks("Mappe1").Worksheets(1)
        End If
    Next Blatt
End Sub

Tipps für Profis

  • Nutze Application.ScreenUpdating = False, um die Bildschirmaktualisierung während der Ausführung des Makros zu deaktivieren. Dadurch wird der Prozess beschleunigt.
Sub EffizientesKopieren()
    Application.ScreenUpdating = False
    ' Dein Kopier-Code hier
    Application.ScreenUpdating = True
End Sub
  • Experimentiere mit Arrays, um die Geschwindigkeit zu erhöhen, wenn du viele Blätter gleichzeitig verarbeiten möchtest.

FAQ: Häufige Fragen

1. Muss ich die Ziel-Datei geöffnet haben?
Ja, die Datei B muss geöffnet sein, damit das Kopieren der Tabellenblätter funktioniert.

2. Kann ich nur bestimmte Blätter kopieren?
Ja, du kannst Bedingungen in deinem Code einfügen, um nur die gewünschten Blätter zu kopieren, wie im praktischen Beispiel gezeigt.

3. Gibt es eine Möglichkeit, Diagrammblätter ebenfalls zu kopieren?
Ja, du kannst die Methode Sheets.Copy verwenden, die auch Diagrammblätter umfasst, indem du die Worksheets-Sammlung durch Sheets ersetzt.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige