Dieser Leitfaden führt Sie in die Arbeit mit dem Arbeitsmappenobjekt in VBA.
Das Arbeitsmappenobjekt
Um mit Arbeitsmappen in VBA interagieren zu können, müssen Sie zunächst die Arbeitsmappenobjekt.
Mit dem Arbeitsmappenobjekt können Sie Arbeitsmappen wie folgt anhand ihres Namens referenzieren:
1 | Arbeitsmappen("Book2.xlsm").Aktivieren |
Dieser Code funktioniert jedoch nur, wenn die Arbeitsmappe geöffnet ist. Wenn die Arbeitsmappe geschlossen ist, müssen Sie den vollständigen Arbeitsmappenpfad angeben:
1 | Workbooks.Open ("C:\Users\StevePC2\Downloads\book2.xlsm") |
Anstatt den vollständigen Pfad einzugeben, können Sie, wenn sich Ihre gewünschte Arbeitsmappe im selben Verzeichnis wie die Arbeitsmappe befindet, in der Ihr Code gespeichert ist, diesen Zeilencode verwenden, um die Arbeitsmappe zu öffnen:
1 | Workbooks.Open (ThisWorkbook.Path & "\book2.xlsm") |
Dabei wird das ThisWorkbook-Objekt verwendet, das wir im nächsten Abschnitt besprechen werden.
Arbeitsmappen-Indexnummer
Schließlich können Sie Arbeitsmappen anhand ihrer „Indexnummer“ referenzieren. Die Indexnummer einer Arbeitsmappe entspricht der Reihenfolge, in der die Arbeitsmappe geöffnet wurde (technisch gesehen ist dies die Position der Arbeitsmappe in der Arbeitsmappensammlung).
1 | Arbeitsmappen(1).Aktivieren |
Dies ist nützlich, wenn Sie beispielsweise die erste (oder letzte) geöffnete Arbeitsmappe schließen möchten.
Aktivieren Sie Arbeitsmappe, ActiveWorkbook und ThisWorkbook
Wenn eine Arbeitsmappe ist NICHT AKTIV, können Sie wie folgt auf die Objekte der Arbeitsmappe zugreifen:
1 | Workbooks("Book2.xlsm").Sheets("Sheet1").Range("A1").value = 1 |
Wenn die Arbeitsmappe jedoch aktiv ist, können Sie das Arbeitsmappenobjekt weglassen:
1 | Sheets("Sheet1").Range("A1").value = 1 |
Und wenn Sie mit dem aktiven Blatt der Arbeitsmappe interagieren möchten, können Sie das Blattobjekt auch weglassen:
1 | Bereich("A1").Wert = 1 |
Arbeitsmappe aktivieren
Um eine Arbeitsmappe zu aktivieren, verwenden Sie die Methode aktivieren.
1 | Arbeitsmappen("Book2.xlsm").Aktivieren |
Jetzt können Sie mit den Objekten von Book2 interagieren, ohne den Arbeitsmappennamen explizit anzugeben.
AktivArbeitsmappe
Die AktivArbeitsmappe Objekt verweisen immer auf die aktive Arbeitsmappe. Dies ist nützlich, wenn Sie das ActiveWorkbook einer Variablen zur späteren Verwendung zuweisen möchten.
12 | Dim wb als ArbeitsmappeSet wb = ActiveWorkbook |
DiesesArbeitsbuch
Die DiesesArbeitsbuch object verweist immer auf die Arbeitsmappe, in der der ausgeführte Code gespeichert ist. Um ThisWorkbook zu aktivieren, verwenden Sie diese Codezeile:
1 | DieseArbeitsmappe.Aktivieren |
Arbeitsmappe öffnen
Um eine Arbeitsmappe zu öffnen, verwenden Sie die Offene Methode:
1 | Workbooks.Open ("C:\Users\StevePC2\Downloads\book2.xlsm") |
Die neu geöffnete Arbeitsmappe wird immer die AktivArbeitsmappe, sodass Sie problemlos damit interagieren können.
1 | ActiveWorkbook.Speichern |
Die Open-Methode hat mehrere andere Argumente, die es Ihnen ermöglichen, schreibgeschützt zu öffnen, eine kennwortgeschützte Arbeitsmappe zu öffnen und vieles mehr. Dies wird hier in unserem Artikel über das Öffnen / Schließen von Arbeitsmappen behandelt.
Öffnen und Variable zuweisen
Sie können auch eine Arbeitsmappe öffnen und gleichzeitig einer Variablen zuweisen:
12 | Dim wb als ArbeitsmappeSet wb = Workbooks.Open("C:\Users\StevePC2\Downloads\book2.xlsm") |
Dialog Datei öffnen
Sie können das Dialogfeld „Datei öffnen“ auch wie folgt auslösen:
12345678 | Unter OpenWorkbook ()Dim strFile As StringstrFile = Application.GetOpenFilename()Arbeitsmappen.Öffnen (strFile)End Sub |
Neue Arbeitsmappe erstellen (hinzufügen)
Diese Codezeile erstellt eine neue Arbeitsmappe:
1 | Arbeitsmappen.Hinzufügen |
Die neue Arbeitsmappe wird jetzt zum AktivArbeitsmappe, sodass Sie damit interagieren können (z. B. die neue Arbeitsmappe speichern).
Neue Arbeitsmappe zu Variable hinzufügen
Sie können einer Variablen auch direkt eine neue Arbeitsmappe hinzufügen:
12 | Dim wb als ArbeitsmappeSet wb = Workbooks.Add |
Arbeitsmappe schließen
Schließen & speichern
Um eine Arbeitsmappe mit Speichern zu schließen, verwenden Sie die Schließen-Methode mit Änderungen speichern auf WAHR setzen:
1 | ActiveWorkbook.Close SaveChanges:=True |
Schließen ohne Speichern
Um ohne zu speichern zu schließen, stellen Sie Änderungen speichern gleich FALSCH:
1 | ActiveWorkbook.Close SaveChanges:=False |
Arbeitsmappe Speichern unter
Die SaveAs-Methode wird verwendet, um eine Arbeitsmappe unter zu speichern.
Um eine Arbeitsmappe unter einem neuen Namen im selben Verzeichnis zu speichern, können Sie Folgendes verwenden:
1 | 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:
1 | ActiveWorkbook.SaveAs "C:\Users\StevePC2\Downloads\new.xlsm" |
Andere VBA-Beispiele für Arbeitsmappen
Name der Arbeitsmappe
So rufen Sie den Namen einer Arbeitsmappe ab:
1 | MsgBox ActiveWorkbook.Name |
Arbeitsmappe schützen
Um die Arbeitsmappenstruktur vor Bearbeitung zu schützen, können Sie die Schutzmethode (Passwort optional):
1 | Workbooks("book1.xlsm").Protect "password" |
Um den Schutz einer Arbeitsmappe aufzuheben, verwenden Sie die UnProtect-Methode:
1 | Workbooks("book1.xlsm").Unprotect "password" |
Durchlaufen aller geöffneten Arbeitsmappen
So durchlaufen Sie alle geöffneten Arbeitsmappen:
123456789 | Sub LoopThroughWBs()Dim wb als ArbeitsmappeFür jedes wb in ArbeitsmappenMsgBox wb.NameNächstes wbEnd Sub |
Arbeitsmappen-Aktivierungsereignis
Sie können Code ausführen, wenn eine bestimmte Arbeitsmappe mit dem . geöffnet wird Arbeitsmappen-Öffnen-Ereignis.
Platzieren Sie dieses Verfahren im ThisWorkbook-Modul Ihrer Arbeitsmappe:
123 | Private Unterarbeitsmappe_Open()Sheets("sheet1").AktivierenEnd Sub |
Dieses Verfahren wird aktiviert Blatt1 jedes Mal, wenn die Arbeitsmappe geöffnet wird.