Duplizieren eines Blattes in Excel mit VBA

  • Teile Das
Michael Brown

Das Tutorial bietet eine Sammlung von Makros zum Duplizieren von Blättern in Excel: Kopieren und Umbenennen auf der Grundlage von Zellwerten, Kopieren mehrerer Blätter, Kopieren eines aktiven Arbeitsblatts in eine andere Datei, ohne es zu öffnen, und mehr.

Manuelles Kopieren von Blättern in Excel ist ziemlich schnell und einfach... wenn es nur ein- oder zweimal durchgeführt wird. Mehrere Blätter mehrfach zu duplizieren ist langweilig und zeitraubend. Auf dieser Seite finden Sie eine Handvoll nützlicher Makros, um diese Aufgabe zu automatisieren.

    Excel VBA zum Kopieren von Blättern in eine neue Arbeitsmappe

    Dieses einfachste einzeilige Makro tut genau das, was sein Name vermuten lässt - es kopiert das aktive Blatt in eine neue Arbeitsmappe.

    Public Sub CopySheetToNewWorkbook() activeSheet.Copy End Sub

    Mehrere Blätter in Excel mit VBA kopieren

    Wenn Sie mehrere Blätter aus der aktiven Arbeitsmappe in eine neue Arbeitsmappe kopieren möchten, wählen Sie alle gewünschten Arbeitsblätter aus und führen dieses Makro aus:

    Public Sub CopySelectedSheets() ActiveWindow.SelectedSheets.Copy End Sub

    Excel VBA zum Kopieren von Blättern in eine andere Arbeitsmappe

    Je nachdem, wo Sie das kopierte Blatt einfügen möchten, verwenden Sie eines der folgenden Makros.

    Blatt an den Anfang einer anderen Arbeitsmappe kopieren

    Dieses Makro kopiert das aktive Blatt vor allen anderen Arbeitsblättern in die Zieldatei, Buch1 Um in eine andere Datei zu kopieren, ersetzen Sie "Book1.xlsx" durch den vollständigen Namen der Zielarbeitsmappe.

    Public Sub CopySheetToBeginningAnotherWorkbook() activeSheet.Copy Before:=Workbooks( "Book1.xlsx" ).Sheets(1) End Sub

    Blatt an das Ende einer anderen Arbeitsmappe kopieren

    Dieser Teil des Codes dupliziert das aktive Arbeitsblatt und platziert die Kopie am Ende von Buch1 Auch hier gilt: Ersetzen Sie "Book1.xlsx" durch den Namen Ihrer Zielarbeitsmappe.

    Public Sub CopySheetToEndAnotherWorkbook() activeSheet.Copy After:=Workbooks( "Book1.xlsx" ).Sheets(Workbooks( "Book1.xlsx" ).Worksheets.Count) End Sub

    Hinweis: Damit die Makros funktionieren, muss die Zielarbeitsmappe auf Ihrer Festplatte oder im Netzwerk gespeichert sein.

    Blatt in eine ausgewählte Arbeitsmappe kopieren

    Um das aktuelle Blatt in eine beliebige geöffnete Arbeitsmappe zu kopieren, können Sie ein UserForm (namens BenutzerFormular1 ) mit einer ListBox Kontrolle ( namens ListBox1 ) und zwei Tasten:

    Doppelklicken Sie dann auf das Formular und fügen Sie den folgenden Code in das Codefenster ein:

    Public SelectedWorkbook As String Private Sub UserForm_Initialize() SelectedWorkbook = "" ListBox1.Clear For Each wbk In Application.Workbooks ListBox1.AddItem (wbk.Name) Next End Sub Private Sub CommandButton1_Click() If ListBox1.ListIndex> -1 Then SelectedWorkbook = ListBox1.List(ListBox1.ListIndex) End If Me.Hide End Sub Private Sub CommandButton2_Click() SelectedWorkbook = "" Me.Hide EndUnter

    Wenn die UserForm vorhanden ist, können Sie eines der folgenden Makros verwenden, um das aktive Blatt in eine Arbeitsmappe Ihrer Wahl zu kopieren.

    Blatt zum Kopieren Anfang der ausgewählten Arbeitsmappe :

    Public Sub CopySheetToBeginningAnotherWorkbook() Load UserForm1 UserForm1.Show If (UserForm1.SelectedWorkbook "" ) Then activeSheet.Copy Before:=Workbooks(UserForm1.SelectedWorkbook).Sheets(1) End If Unload UserForm1 End Sub

    Blatt zum Kopieren Ende der ausgewählten Arbeitsmappe :

    Public Sub CopySheetToEndAnotherWorkbook() Load UserForm1 UserForm1.Show If (UserForm1.SelectedWorkbook "" ) Then activeSheet.Copy After:=Workbooks( _ UserForm1.SelectedWorkbook).Sheets( _ Workbooks(UserForm1.SelectedWorkbook). _ Worksheets.Count) End If Unload UserForm1 End Sub

    Wenn das Makro in Excel ausgeführt wird, zeigt es Ihnen eine Liste aller derzeit geöffneten Arbeitsmappen an. Sie wählen die gewünschte aus und klicken auf OK:

    Excel-Makro zum Kopieren und Umbenennen von Blättern

    Wenn Sie ein Blatt in Excel kopieren, erhält die Kopie einen Namen im Standardformat wie Blatt1 (2) Die folgenden Makros ersparen Ihnen die Mühe, den Standardnamen manuell zu ändern.

    Dieser Code dupliziert das aktive Arbeitsblatt, gibt der Kopie den Namen "Testblatt" (Sie können ihn durch einen beliebigen anderen Namen ersetzen) und platziert das kopierte Blatt am Ende der aktuellen Arbeitsmappe.

    Public Sub CopySheetAndRenamePredefined() activeSheet.Copy After:=Worksheets(Sheets.Count) On Error Resume Next activeSheet.Name = "Test Sheet" End Sub

    Um dem Benutzer zu ermöglichen den Namen für das kopierte Blatt angeben , verwenden Sie diesen Code:

    Public Sub CopySheetAndRename() Dim newName As String On Error Resume Next newName = InputBox( "Geben Sie den Namen für das kopierte Arbeitsblatt ein" ) If newName "" Then activeSheet.Copy After:=Worksheets(Sheets.Count) On Error Resume Next activeSheet.Name = newName End If End Sub

    Nach der Ausführung zeigt das Makro das folgende Eingabefeld an, in das Sie den gewünschten Namen eingeben und OK drücken:

    Excel-Makro zum Kopieren von Blättern und Umbenennen anhand von Zellwerten

    In manchen Situationen kann es sinnvoller sein, eine Kopie mit einem bestimmten Zellwert zu benennen, z. B. eine Spaltenüberschrift. Dazu nehmen Sie einfach den obigen Code und geben den Wert der Spalte aktuell ausgewählte Zelle Wie im vorherigen Beispiel wird die Kopie am Ende der aktiven Arbeitsmappe platziert.

    Der schwierigste Teil wäre, dass die Benutzer immer die richtige Zelle auswählen, bevor sie das Makro ausführen :)

    Public Sub CopySheetAndRenameByCell() Dim newName As String On Error Resume Next newName = InputBox( "Geben Sie den Namen für das kopierte Arbeitsblatt ein" , "Arbeitsblatt kopieren" , ActiveCell.Value) If newName "" Then activeSheet.Copy After:=Worksheets(Sheets.Count) On Error Resume Next activeSheet.Name = newName End If End Sub

    Alternativ können Sie auch die Adresse der Zelle fest codieren Um das kopierte Arbeitsblatt nach einer anderen Zelle zu benennen, ersetzen Sie A1 durch einen entsprechenden Zellverweis.

    Public Sub CopySheetAndRenameByCell2() Dim wks As Worksheet Set wks = activeSheet activeSheet.Copy After:=Worksheets(Sheets.Count) If wks.Range( "A1" ).Value "" Then On Error Resume Next activeSheet.Name = wks.Range( "A1" ).Value End If wks.Activate End Sub

    Makro zum Kopieren eines Arbeitsblatts in eine geschlossene Arbeitsmappe

    Dieses Makro kopiert das aktive Blatt an das Ende einer geschlossenen Arbeitsmappe. Der Name einer anderen Arbeitsmappe wird im Code nicht angegeben - das Makro öffnet das Standardfenster des Windows-Explorers und ermöglicht Ihnen die Auswahl einer beliebigen Zieldatei:

    Nachdem Sie die Datei ausgewählt und auf Öffnen Sie wird das Makro das aktive Blatt kopieren und die Zielarbeitsmappe automatisch schließen.

    Public Sub CopySheetToClosedWorkbook() Dim fileName Dim closedBook As Workbook Dim currentSheet As Worksheet fileName = Application.GetOpenFilename( "Excel Files (*.xlsx), *.xlsx" ) If fileName False Then Application.ScreenUpdating = False Set currentSheet = Application.activeSheet Set closedBook = Workbooks. Open (fileName) currentSheet.Copy After:=closedBook.Sheets(closedBook.Worksheets.Count)closedBook. close ( True ) Application.ScreenUpdating = True End If End Sub

    Excel VBA zum Kopieren von Blättern aus einer anderen Arbeitsmappe ohne Öffnen

    Mit diesem Makro können Sie ein Arbeitsblatt aus einer anderen Excel-Datei kopieren, ohne diese zu öffnen. Das kopierte Blatt wird am Ende der aktuellen Arbeitsmappe eingefügt.

    Denken Sie nur daran, einige Ersetzungen im Code vorzunehmen:

    • C:\Users\XXX\Documents\Target_Book.xlsx sollte in den tatsächlichen Pfad und Namen der Arbeitsmappe geändert werden, aus der Sie ein Blatt kopieren möchten.
    • Sheet1 sollte durch den Namen des Blattes ersetzt werden, das Sie kopieren möchten.
    Public Sub CopySheetFromClosedWorkbook() Dim sourceBook As Workbook Application.ScreenUpdating = False Set sourceBook = Workbooks. Open ( "C:\Users\XXX\Documents\Target_Book.xlsx" ) sourceBook.Sheets( "Sheet1" ).Copy After:=DiesesWorkbook.Sheets(DiesesWorkbook.Sheets.Count) sourceBook. Close Application.ScreenUpdating = True End Sub

    Excel VBA zum mehrfachen Duplizieren von Blättern

    Manchmal müssen Sie dasselbe Blatt mehr als einmal duplizieren, um z. B. verschiedene Formeln für denselben Datensatz zu testen. Dies lässt sich mit dem folgenden Makro leicht bewerkstelligen.

    Public Sub DuplicateSheetMultipleTimes() Dim n As Integer On Error Resume Next n = InputBox( "Wie viele Kopien des aktiven Blattes möchten Sie erstellen?" ) If n>= 1 Then For numtimes = 1 To n activeSheet.Copy After:=ActiveWorkbook.Sheets(Worksheets.Count) Next End If End Sub

    Öffnen Sie das Originalblatt, führen Sie das Makro aus, geben Sie an, wie viele Kopien des aktiven Blattes Sie erstellen möchten, und klicken Sie auf OK :

    Duplizieren von Blättern in Excel mit VBA

    Um ein Blatt in Excel mit einem der oben genannten Makros zu kopieren, können Sie entweder den VBA-Code in Ihr eigenes Buch einfügen oder ein Makro aus unserer Beispielarbeitsmappe ausführen.

    So fügen Sie ein Makro zu Ihrer Arbeitsmappe hinzu

    Um den Code in Ihre Arbeitsmappe einzufügen, führen Sie die folgenden Schritte aus:

    1. Öffnen Sie das Arbeitsblatt, das Sie kopieren möchten.
    2. Drücken Sie Alt + F11, um den Visual Basic Editor zu öffnen.
    3. Klicken Sie im linken Fensterbereich mit der rechten Maustaste auf DiesesArbeitsbuch und klicken Sie dann auf einfügen. > Modul .
    4. Fügen Sie den Code in das Codefenster ein.
    5. Drücken Sie F5, um das Makro auszuführen.

    Eine ausführliche Schritt-für-Schritt-Anleitung finden Sie unter Wie man VBA-Code in Excel einfügt.

    So führen Sie ein Makro aus unserer Beispiel-Arbeitsmappe aus

    Alternativ können Sie auch unsere Beispiel-Arbeitsmappe zum Duplizieren von Excel-Blättern herunterladen und den Code von dort aus ausführen.

    Die Beispielarbeitsmappe enthält die folgenden Makros:

    CopySheetToNewWorkbook - kopiert das aktuelle Arbeitsblatt in eine neue Arbeitsmappe.

    CopySelectedSheets - kopiert mehrere Blätter, die Sie auswählen, in eine neue Arbeitsmappe.

    CopySheetToBeginningAnotherWorkbook - kopiert das aktive Blatt an den Anfang einer anderen Arbeitsmappe.

    CopySheetToEndAnotherWorkbook - kopiert das aktive Blatt an das Ende einer anderen Excel-Datei.

    CopySheetAndRename - dupliziert das aktuelle Blatt, benennt es nach den Angaben des Benutzers um und stellt die Kopie hinter alle anderen Blätter in der aktuellen Arbeitsmappe.

    CopySheetAndRenamePredefined - dupliziert das aktive Blatt, gibt der Kopie einen fest kodierten Namen und platziert sie am Ende der aktuellen Arbeitsmappe.

    CopySheetAndRenameByCell - erstellt eine Kopie des aktiven Blattes und benennt sie auf der Grundlage des markierten Zellwertes um.

    CopySheetAndRenameByCell2 - kopiert das aktive Blatt und benennt es anhand der hartcodierten Zelladresse um.

    CopySheetToClosedWorkbook - ermöglicht es Ihnen, ein Blatt in eine geschlossene Arbeitsmappe zu kopieren.

    CopySheetFromClosedWorkbook - ermöglicht es Ihnen, ein Blatt aus einer anderen Excel-Datei zu kopieren, ohne es zu öffnen.

    DuplicateSheetMultipleTimes - können Sie ein Blatt in Excel mehrfach duplizieren.

    Um das Makro in Excel auszuführen, gehen Sie einfach wie folgt vor:

    1. Öffnen Sie die heruntergeladene Arbeitsmappe und aktivieren Sie den Inhalt, wenn Sie dazu aufgefordert werden.
    2. Öffnen Sie Ihre eigene Arbeitsmappe und navigieren Sie zu dem Blatt, das Sie kopieren möchten.
    3. Drücken Sie in Ihrem Arbeitsblatt die Tastenkombination Alt + F8, wählen Sie das gewünschte Makro aus, und klicken Sie auf ausführen. .

    So können Sie ein Blatt in Excel mit VBA duplizieren. Ich danke Ihnen für die Lektüre und hoffe, Sie nächste Woche in unserem Blog begrüßen zu dürfen!

    Michael Brown ist ein begeisterter Technologie-Enthusiast mit einer Leidenschaft für die Vereinfachung komplexer Prozesse mithilfe von Softwaretools. Mit mehr als einem Jahrzehnt Erfahrung in der Technologiebranche hat er seine Fähigkeiten in Microsoft Excel und Outlook sowie Google Sheets und Docs verfeinert. Michaels Blog widmet sich dem Teilen seines Wissens und seiner Expertise mit anderen und bietet leicht verständliche Tipps und Tutorials zur Verbesserung von Produktivität und Effizienz. Egal, ob Sie ein erfahrener Profi oder ein Anfänger sind, Michaels Blog bietet wertvolle Einblicke und praktische Ratschläge, wie Sie diese wichtigen Softwaretools optimal nutzen können.