VBA – Arbeiten mit Arbeitsmappen (Das Workbook-Objekt)
In this Article
Dieser Leitfaden führt Sie in die Arbeit mit dem Workbook-Objekt in VBA ein.
Das Workbook-Objekt
Um mit Arbeitsmappen in VBA arbeiten zu können, müssen Sie zunächst das Workbook-Objekt verstehen.
Mit dem Workbook-Objekt können Sie auf Arbeitsmappen über ihren Namen folgendermaßen verweisen:
Workbooks("Mappe2.xlsm").Activate
Dieser Code funktioniert jedoch nur, wenn die Arbeitsmappe geöffnet ist. Wenn die Arbeitsmappe geschlossen ist, müssen Sie den vollständigen Pfad dazu angeben:
Workbooks.Open ("C:\Users\StevePC2\Downloads\Mappe2.xlsm")
Wenn sich die gewünschte Arbeitsmappe in demselben Verzeichnis befindet wie die Arbeitsmappe, in der Ihr Code gespeichert ist, können Sie statt der Eingabe des vollständigen Pfads auch diese Codezeile verwenden, um die Arbeitsmappe zu öffnen:
Workbooks.Open (ThisWorkbook.Path & "\Mappe2.xlsm")
Dabei wird das ThisWorkbook-Objekt verwendet, das wir im nächsten Abschnitt besprechen werden.
Indexnummer der Arbeitsmappe
Schließlich können Sie auf Arbeitsmappen über ihre „Indexnummer“ verweisen. Die Indexnummer einer Arbeitsmappe entspricht der Reihenfolge, in der sie geöffnet wurde (technisch gesehen die Position der Arbeitsmappe in der Arbeitsmappensammlung).
Workbooks(1).Activate
Dies ist nützlich, wenn Sie z. B. die erste (oder letzte) geöffnete Arbeitsmappe schließen möchten.
Aktivieren von Arbeitsmappe, ActiveWorkbook und ThisWorkbook
Wenn eine Arbeitsmappe NICHT AKTIV ist, können Sie auf ihre Objekte folgendermaßen zugreifen:
Workbooks("Mappe2.xlsm").Sheets("Tabelle1").Range("A1").Value = 1
Wenn die Arbeitsmappe jedoch aktiv ist, können Sie das Workbook-Objekt weglassen:
Sheets("Tabelle1").Range("A1").Value = 1
Und wenn Sie mit dem aktiven Blatt der Arbeitsmappe interagieren möchten, können Sie das Sheets-Objekt ebenfalls weglassen:
Range("A1").Value = 1
Arbeitsmappe aktivieren
Um eine Arbeitsmappe zu aktivieren, verwenden Sie die Methode Activate.
Workbooks("Mappe2.xlsm").Activate
Jetzt können Sie mit den Objekten von Mappe2 interagieren, ohne den Namen der Arbeitsmappe explizit angeben zu müssen.
ActiveWorkbook
Das ActiveWorkbook-Objekt bezieht sich immer auf die aktuelle Arbeitsmappe. Dies ist nützlich, wenn Sie die aktuelle Arbeitsmappe einer Variablen zuweisen möchten, um sie später zu verwenden.
Dim wb As Workbook
Set wb = ActiveWorkbook
ThisWorkbook
Das ThisWorkbook-Objekt bezieht sich immer auf die Arbeitsmappe, in der der laufende Code gespeichert ist. Um ThisWorkbook zu aktivieren, verwenden Sie diese Codezeile:
ThisWorkbook.Activate
Arbeitsmappe öffnen
Um eine Arbeitsmappe zu öffnen, verwenden Sie die Methode Open:
Workbooks.Open ("C:\Benutzer\StevePC2\Downloads\Mappe2.xlsm")
Die neu geöffnete Arbeitsmappe wird immer zur aktuellen Arbeitsmappe, so dass Sie leicht mit ihr interagieren können.
ActiveWorkbook.Save
Die Open-Methode hat mehrere andere Argumente, mit denen Sie die Arbeitsmappe schreibgeschützt, kennwortgeschützt und mehr öffnen können. Sie wird hier in unserem Artikel über das Öffnen/Schließen von Arbeitsmappen behandelt.
Öffnen und einer Variable zuweisen
Sie können auch eine Arbeitsmappe öffnen und sie gleichzeitig einer Variablen zuweisen:
Dim wb As Workbook
Set wb = Workbooks.Open("C:\Users\StevePC2\Downloads\Mappe2.xlsm")
Dialog „Datei öffnen“
Sie können das Dialogfenster „Datei öffnen“ auch folgendermaßen auslösen:
Sub OpenWorkbook ()
Dim strDatei As String
strDatei = Application.GetOpenFilename()
Workbooks.Open (strDatei)
End Sub
Neue Arbeitsmappe erstellen (hinzufügen)
Mit dieser Codezeile wird eine neue Arbeitsmappe erstellt:
Workbooks.Add
Die neue Arbeitsmappe wird nun zur aktuellen Arbeitsmappe, so dass Sie mit ihr arbeiten können (z. B. die neue Arbeitsmappe speichern).
Neue Arbeitsmappe zur Variablen hinzufügen
Sie können eine neue Arbeitsmappe auch direkt zu einer Variablen hinzufügen:
Dim wb As Workbook
Set wb = Workbooks.Add
Arbeitsmappe schließen
Schließen & Speichern
Um eine Arbeitsmappe mit Speichern zu schließen, verwenden Sie die Close Methode mit SaveChanges auf TRUE gesetzt:
ActiveWorkbook.Close SaveChanges:=True
Schließen ohne Speichern
Um eine Arbeitsmappe zu schließen, ohne zu speichern, setzen Sie SaveChanges auf FALSE:
ActiveWorkbook.Close SaveChanges:=False
Arbeitsmappe Speichern unter
Die SaveAs-Methode wird verwendet, um eine Kopie der Arbeitsmappe zu speichern.
Um eine Arbeitsmappe unter einem neuen Namen im gleichen Verzeichnis zu speichern, können Sie dies implizit verwenden:
ActiveWorkbook.SaveAs "Neu"
wobei „Neu“ der neue Dateiname ist.
Um eine Arbeitsmappe in einem neuen Verzeichnis mit einer bestimmten Dateierweiterung zu speichern, geben Sie einfach das neue Verzeichnis und den Dateinamen an:
ActiveWorkbook.SaveAs "C:\Users\StevePC2\Downloads\Neu.xlsm"
Andere Arbeitsmappen-VBA-Beispiele
Name der Arbeitsmappe
So erhalten Sie den Namen einer Arbeitsmappe:
MsgBox ActiveWorkbook.Name
Arbeitsmappe schützen
Um die Struktur der Arbeitsmappe vor der Bearbeitung zu schützen, können Sie die Protect-Methode (Kennwort optional):
Workbooks("Mappe1.xlsm").Protect "password"
Zum Aufheben des Schutzes einer Arbeitsmappe verwenden Sie die UnProtect-Methode:
Workbooks("Mappe1.xlsm").Unprotect "password"
Alle geöffneten Arbeitsmappen mit einer Schleife durchlaufen
Um alle geöffneten Arbeitsmappen mit einer Schleife zu durchlaufen, können Sie den folgenden Code verwenden:
Sub ArbeitsmappenDurchlaufen()
Dim wb As Workbook
For Each wb In Workbooks
MsgBox wb.Name
Next wb
End Sub
Ereignis beim Öffnen der Arbeitsmappe aktivieren
Mit dem Workbook-Open-Ereignis können Sie einen Code ausführen, wenn eine bestimmte Arbeitsmappe geöffnet wird.
Platzieren Sie diese Prozedur in das ThisWorkbook-Modul Ihrer Arbeitsmappe:
Private Sub Workbook_Open()
Sheets("Tabelle1").Activate
End Sub
Mit dieser Prozedur wird Tabelle1 jedes Mal aktiviert, wenn die Arbeitsmappe geöffnet wird.