Hinzufügen eines neuen Arbeitsblatts zu einer Arbeitsmappe mit VBA.

Die Methode Add der Sammlung Workheets wird verwendet, um ein neues Arbeitsblatt zu erstellen. Das neue Arbeitsblatt wird das aktive Blatt. Alternativ können Sie auch die Sammlung Sheets verwenden, die das gleiche Ergebnis liefert. In ähnlicher Weise können Sie Charts.Add verwenden, um ein Diagramm hinzuzufügen.

In seiner einfachsten Form wird er so aufgerufen:


ActiveWorkbook.Worksheets.Add 'abreviated: Worksheets.Add or Sheets.Add

Das Sammlungsobjekt Sheets in der obigen Abbildung stammt aus dem Verfahren Workbook Worksheets.

Die Prozedur gibt einen Wert vom Typ Worksheet zurück, der optional der Variablen ws zugewiesen wird.


Dim ws As Worksheet
Set ws = ActiveWorkbook.Worksheets.Add(Type:=xlWorksheet)

Wenn Vor und Nach weggelassen werden, wird das neue Blatt vor dem aktiven Blatt eingefügt.

Vorher / Nachher: wo das neue Blatt eingefügt werden soll

Verwenden Sie als Argument Before oder After ein Blattobjekt, um anzugeben, wo das neue Blatt hinzugefügt werden soll. Da Sie ein Blatt aus derselben Arbeitsmappe angeben müssen, zu der Sie etwas hinzufügen wollen, ist es sinnvoll, eine Variable Workbook zu verwenden: wb

Ein neues Blatt am Anfang der Arbeitsmappe hinzufügen


Dim wb As Workbook
Set wb = ActiveWorkbook
wb.Sheets.Add Before:=wb.Sheets(1)

wb.Sheets(1) ist der Weg, um das erste Blatt in der Arbeitsmappe zu erhalten - wo Sie Before einfügen möchten.

Ein neues Blatt nach dem letzten hinzufügen

Sie können den folgenden Code verwenden, um ein neues Blatt am Ende einer Arbeitsmappe hinzuzufügen.


Dim wb As Workbook
Set wb = ActiveWorkbook
wb.Sheets.Add After:=wb.Sheets(wb.Sheets.Count)	

wb.Sheets.Count gibt Ihnen die Indexnummer des letzten Blatts in der Arbeitsmappe - wo Sie Nach einfügen möchten .

Count (Zählen Sie)

Die Anzahl der hinzuzufügenden Blätter.


ActiveWorkbook.Worksheets.Add(Count:=1)

Das Argument Typ: Worksheet, Chart oder Template (Arbeitsblatt, Diagramm oder Vorlage)

Wenn nichts angegeben wird, wird ein Arbeitsblatt eingefügt (außer natürlich im Fall von Charts.Add).


ActiveWorkbook.Sheets.Add 'add a Worksheet
ActiveWorkbook.Sheets.Add(Type:=xlChart) 'a chart

Ein neues Blatt aus einer Vorlage erstellen

Die Möglichkeit, eine Datei als Quelle für die hinzuzufügenden Blätter zu verwenden, ist leistungsstark. Sie erlaubt es Ihnen:

  • ein vollständiges formatiertes Layout liefern, das möglicherweise mehrere Blätter umfasst - eine Vorlage
  • Daten aus einer Quelldatei importieren

Die Quelldatei muss keine Excel-Vorlage sein, jeder Dateityp, der mit Excel geöffnet werden kann, genügt, z.B.


Sheets.Add Type:="C:\Code VBA\Demo\Layout.xlsx"
Sheets.Add Type:="C:\Code VBA\Demo\Data240614.csv"

Fügen Sie ein neues Blatt hinzu und nennen Sie es

Erstellen Sie zunächst das neue Blatt und benennen Sie es dann um.


Dim ws As Worksheet
Set ws = ActiveWorkbook.Worksheets.Add
Dim strName As String: strName = "new name"
ws.Name = strName

Ein neues Blatt mit Namen erstellen, falls nicht vorhanden

Prüfen Sie zunächst, ob das Blatt existiert. Wenn nicht, können Sie es erstellen.


Dim wb As Workbook
Set wb = ActiveWorkbook
Dim strSheetName As String: strSheetName = "the name"
If Not SheetExists(SheetName:=strSheetName, Workbook:=wb) Then
	Set ws = ActiveWorkbook.Worksheets.Add
	ws.Name = strSheetName
End If

Erstellen Sie ein neues Blatt mit dem heutigen Datum

Verwenden Sie die Format- oder die FormatDateTime-Funktion, um auf einfache Weise die erforderliche Namenszeichenfolge zu erhalten.


Dim ws As Worksheet
Set ws = ActiveWorkbook.Worksheets.Add
Dim strName As String: strName = "new name"
ws.Name = Format(Date, "yymmdd")

Ein neues Blatt auf der Grundlage eines Zellwerts erstellen

Der folgende Code zeigt, wie das neue Blatt seinen Wert aus einer Zelle eines bereits vorhandenen Arbeitsblatts erhält.


Dim wb As Workbook
Set wb = ActiveWorkbook
Dim wsWithValue As Worksheet
Dim strSheet As String: strSheet = "Sheet1"
Set wsWithValue = wb.Sheets(Index:=strSheet)
Dim ws As Worksheet
Set ws = wb.Worksheets.Add
Dim strRange As String: strRange = "A1"
Dim rng As Range
Set rng = wsWithValue.Range(Cell1:=strRange)
Dim strName As String: strName = rng.Value
ws.Name = strName

Ein neues Blatt erstellen und Daten kopieren

Schließlich werden Sie höchstwahrscheinlich einige Daten in das neue Arbeitsblatt einfügen. Im Folgenden gehe ich davon aus, dass die Daten aus einer anderen Datenquelle stammen, die zuerst geöffnet wurde


Dim wbDestination As Workbook
Set wbDestination = ActiveWorkbook
Dim wsDestination As Worksheet
'add the new worksheet
Set wsDestination = wbDestination.Worksheets.Add
Dim strRangeDestination As String: strRangeDestination = "B2"
Dim rngDestination As Range
Set rngDestination = wsDestination.Range(Cell1:=strRangeDestination)

'get acces to the source
Dim wbSource As Workbook
Set wbSource = Workbooks.Open(Filename:="C:\Code VBA\Demo\Data.xlsx")
Dim wsSource As Worksheet
Dim strSheetSource As String: strSheetSource = "Sheet1"
Set wsSource = wbSource.Sheets(Index:=strSheetSource)
Dim strRangeSource As String: strRangeSource = "A1"
Dim rngSource As Range
Set rngSource = wsSource.Range(Cell1:=strRangeSource)
'copy the value
rngDestination.Value = rngSource.Value

Autor: Mark Uildriks
Referenz: Sheets.Add(Excel) | Microsoft Learn
Symbol

Versuchen Sie es mit dem Code-VBA-Editor-Add-In