VBA Blatt kopieren / Blatt in eine andere Arbeitsmappe kopieren

In diesem Tutorial wird beschrieben, wie Sie ein Blatt oder ein Arbeitsblatt mit VBA kopieren.

Arbeitsblatt in neue Arbeitsmappe kopieren

So kopieren Sie ein Arbeitsblatt in eine neue Arbeitsmappe:

1 Sheets("Sheet1").Copy

ActiveSheet in neue Arbeitsmappe kopieren

So kopieren Sie das ActiveSheet in eine neue Arbeitsmappe:

1 ActiveSheet.Kopie

Mehrere Blätter in neue Arbeitsmappe kopieren

So kopieren Sie mehrere Blätter in eine neue Arbeitsmappe:

1 ActiveWindow.SelectedSheets.Copy

Blatt innerhalb derselben Arbeitsmappe kopieren

Wir haben damit begonnen, Ihnen das einfachste Beispiel für das Kopieren von Sheets zu zeigen: das Kopieren von Sheet(s) in eine neue Arbeitsmappe. Die folgenden Beispiele zeigen Ihnen, wie Sie ein Blatt innerhalb derselben Arbeitsmappe kopieren. Wenn Sie ein Blatt innerhalb eines Worbooks kopieren, müssen Sie einen Speicherort angeben. Um einen Speicherort anzugeben, weisen Sie VBA an, das Arbeitsblatt VOR oder NACH einem anderen Arbeitsblatt zu verschieben.

Blatt vor einem anderen Blatt kopieren

Hier legen wir fest, dass das Blatt vor Sheet2 kopiert und eingefügt werden soll

1 Sheets("Sheet1").Copy Before:=Sheets("Sheet2")

Blatt vor dem ersten Blatt kopieren

Anstatt den Blattnamen anzugeben, können Sie auch die Blattposition angeben. Hier kopieren und fügen wir ein Blatt vor dem ersten Blatt in der Arbeitsmappe ein.

1 Sheets("Sheet1").Vorher kopieren:=Sheets(1)

Das neu erstellte Blatt ist jetzt das erste Blatt in der Arbeitsmappe.

Blatt nach letztem Blatt kopieren

Verwenden Sie die After-Eigenschaft, um VBA anzuweisen, das Blatt NACH einem anderen Blatt einzufügen. Hier kopieren wir ein Blatt und fügen es nach dem letzten Blatt in der Arbeitsmappe ein:

1 Sheets("Sheet1").Copy After:=Sheets(Sheets.Count)

Beachten Sie, dass wir Sheets.Count verwendet haben, um die Anzahl der Sheets in der Arbeitsmappe zu zählen.

Blatt verschieben

Sie können ein Blatt auch innerhalb einer Arbeitsmappe mit einer ähnlichen Syntax verschieben. Dieser Code verschiebt Sheet1 an das Ende der Arbeitsmappe:

1 Sheets("Sheet1").Move After:=Sheets(Sheets.Count)

Blatt kopieren und benennen

Nach dem Kopieren und Einfügen eines Blatts wird das neu erstellte Blatt zum ActiveSheet. Um unser neues Blatt umzubenennen, verwenden Sie einfach ActiveSheet.Name:

123456 Unter CopySheetRename1()Sheets("Sheet1").Copy After:=Sheets(Sheets.Count)ActiveSheet.Name = "LastSheet"End Sub

Wenn der Tabellenname bereits vorhanden ist, generiert der obige Code einen Fehler. Stattdessen können wir "On Error Resume Next" verwenden, um VBA anzuweisen, die Benennung des Blattes zu ignorieren und mit dem Rest des Verfahrens fortzufahren:

12345678 Unter CopySheetRename2()Sheets("Sheet1").Copy After:=Sheets(Sheets.Count)Bei Fehler Fortsetzen als nächstesActiveSheet.Name = "LastSheet"Bei Fehler GoTo 0End Sub

Oder verwenden Sie unsere RangeExists-Funktion, um zu testen, ob der Blattname bereits vorhanden ist, bevor Sie versuchen, das Blatt zu kopieren:

123456789101112131415161718 Unter CopySheetRename3()Wenn RangeExists("LastSheet") ThenMsgBox "Tabelle existiert bereits."AndersSheets("Sheet1").Copy After:=Sheets(Sheets.Count)ActiveSheet.Name = "LastSheet"Ende WennEnd SubFunktion RangeExists(WhatSheet As String, Optional ByVal WhatRange As String = "A1") As BooleanDimmtest als BereichBei Fehler Fortsetzen als nächstesSet test = ActiveWorkbook.Sheets(WhatSheet).Range(WhatRange)RangeExists = Err.Number = 0Bei Fehler GoTo 0Endfunktion

Blatt basierend auf Zellenwert kopieren und benennen

Möglicherweise möchten Sie auch ein Blatt basierend auf einem Zellenwert kopieren und benennen. Dieser Code benennt das Arbeitsblatt basierend auf dem Zellenwert in A1

12345678 Unter CopySheetRenameFromCell()Sheets("Sheet1").Copy After:=Sheets(Sheets.Count)Bei Fehler Fortsetzen als nächstesActiveSheet.Name = Range("A1").ValueBei Fehler GoTo 0End Sub

Arbeitsblatt in eine andere Arbeitsmappe kopieren

Bisher haben wir mit dem Kopieren von Blättern innerhalb einer Arbeitsmappe gearbeitet. Jetzt werden wir Beispiele zum Kopieren und Einfügen von Blättern in andere Arbeitsmappen behandeln. Dieser Code kopiert ein Blatt an den Anfang einer anderen Arbeitsmappe:

1 Sheets("Sheet1").Copy Before:=Workbooks("Example.xlsm").Sheets(1)

Dadurch wird ein Arbeitsblatt an das Ende einer anderen Arbeitsmappe kopiert.

1 Sheets("Sheet1").Copy After:=Workbooks("Example.xlsm").Sheets(Workbooks("Example.xlsm").Sheets.Count)

Beachten Sie, dass wir ersetzt haben 1 mit Arbeitsmappen("Beispiel.xlsm").Sheets.Count um das letzte Arbeitsblatt zu erhalten.

Arbeitsblatt in eine geschlossene Arbeitsmappe kopieren

Möglicherweise möchten Sie auch ein Arbeitsblatt in eine geschlossene Arbeitsmappe kopieren. Dieser Code öffnet eine geschlossene Arbeitsmappe, damit Sie ein Blatt hineinkopieren können.

123456789 Unter CopySheetToClosedWB()Application.ScreenUpdating = FalseSet closedBook = Workbooks.Open("D:\Dropbox\excel\articles\example.xlsm")Sheets("Sheet1").Vorher kopieren:=closedBook.Sheets(1)closedBook.Close SaveChanges:=TrueApplication.ScreenUpdating = TrueEnd Sub

Blatt aus einer anderen Arbeitsmappe kopieren, ohne sie zu öffnen

Umgekehrt kopiert dieser Code ein Arbeitsblatt AUS einer geschlossenen Arbeitsmappe, ohne dass Sie die Arbeitsmappe manuell öffnen müssen.

123456789 Unter CopySheetFromClosedWB()Application.ScreenUpdating = FalseSet closedBook = Workbooks.Open("D:\Dropbox\excel\articles\example.xlsm")closedBook.Sheets("Sheet1").Copy Before:=ThisWorkbook.Sheets(1)closedBook.Close SaveChanges:=FalseApplication.ScreenUpdating = TrueEnd Sub

Beachten Sie, dass wir in beiden Beispielen ScreenUpdating deaktiviert haben, damit der Prozess im Hintergrund ausgeführt wird.

Excel-Tabelle mehrfach duplizieren

Sie können eine Excel-Tabelle auch mehrmals duplizieren, indem Sie eine Schleife verwenden.

1234567891011121314 Unter CopySheetMultipleTimes()Dim n As IntegerDim i As IntegerBei Fehler Fortsetzen als nächstesn = InputBox("Wie viele Kopien möchten Sie erstellen?")Wenn n > 0 DannFür i = 1 bis nActiveSheet.Copy After:=ActiveWorkbook.Sheets(Worksheets.Count)NächsteEnde WennEnd Sub

Sie werden die Entwicklung der Website helfen, die Seite mit Ihren Freunden teilen

wave wave wave wave wave