Rückkehr in VBA-Code-Beispiele

VBA – Arbeiten mit Arbeitsmappen (Das Workbook-Objekt)

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

datei oeffnen dialogfenster

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.