VBA – Arbeitsmappe öffnen/schließen
In this Article
In diesem Tutorial lernen Sie, wie Sie VBA verwenden, um Excel-Arbeitsmappen auf verschiedene Weisen zu öffnen und zu schließen.
Mit VBA können Sie Dateien mit den Standardmethoden .Open und .Close. öffnen oder schließen.
Wenn Sie wissen möchten, wie Sie prüfen können, ob eine Datei vorhanden ist, bevor Sie versuchen, sie zu öffnen, klicken Sie auf diesen Link: VBA Datei existiert
Öffnen einer Arbeitsmappe in VBA
Arbeitsmappe aus Pfad öffnen
Wenn Sie wissen, welche Datei Sie öffnen möchten, können Sie den vollständigen Pfadnamen in der Funktion angeben. Hier ist der Code:
Workbooks.Open "C:\VBA-Ordner\Musterdatei_1.xlsx"
Diese Zeile des Codes öffnet die Datei „Musterdatei_1“ aus dem „VBA-Ordner“.
Arbeitsmappe öffnen – ActiveWorkbook
Wenn Sie eine Arbeitsmappe öffnen, wird diese automatisch zur Aktiven Arbeitsmappe. Sie können die neu geöffnete Arbeitsmappe wie folgt referenzieren:
ActiveWorkbook.Save
Wenn Sie auf ein Blatt oder einen Bereich verweisen und den Namen der Arbeitsmappe weglassen, nimmt VBA an, dass Sie sich auf die Aktive Arbeitsmappe beziehen:
Sheets("Sheet1").Name = "Eingabe"
Arbeitsmappe öffnen und einer Variablen zuweisen
Sie können auch eine Arbeitsmappe öffnen und sie direkt einer Objektvariablen zuweisen. Diese Prozedur öffnet eine Arbeitsmappe für die Variable wb und speichert dann die Arbeitsmappe.
Sub ArbeitsmappeAlsVariableOeffnen()
Dim wb As Workbook
Set wb = Workbooks.Open("C:\VBA-Ordner\Musterdatei_1.xlsx")
wb.Save
End Sub
Die Zuweisung von Arbeitsmappen zu Variablen beim Öffnen ist der beste Weg, um den Überblick über Ihre Arbeitsmappen zu behalten
Arbeitsmappe -Dialogfenster „Datei öffnen“
Sie können auch das Dialogfenster der Arbeitsmappe zum Öffnen von Dateien auslösen. Damit kann der Benutzer zu einer Datei navigieren und sie öffnen:
Sub ArbeitsmappeOeffnen()
Dim strDatei As String
strDatei = Application.GetOpenFilename()
Workbooks.Open (strDatei)
End Sub
Wie Sie in Abbildung 1 sehen, kann der Benutzer bei diesem Ansatz wählen, welche Datei er öffnen möchte. Das Dialogfenster „Datei öffnen“ kann stark angepasst werden. Sie können einen bestimmten vorgegebenen Ordner als Default festlegen, bestimmen, welche Dateitypen sichtbar sind (z. B. nur .xlsx), und vieles mehr. Ausführliche Beispiele finden Sie in unserem Tutorial zum Dialogfeld “ Datei öffnen“.
Neue Arbeitsmappe öffnen
Mit dieser Codezeile wird eine neue Arbeitsmappe geöffnet:
Workbooks.Add
Neue Arbeitsmappe Als Variable öffnen
Diese Prozedur öffnet eine neue Arbeitsmappe und weist sie der Variablen wb zu:
Sub NeueArbeitsmappeOeffnen()
Dim wb As Workbook
Set wb = Workbooks.Add
End Sub
Arbeitsmappe öffnen – Syntax
Wenn Sie Workbooks.Open verwenden, werden Sie feststellen, dass beim Öffnen der Arbeitsmappe viele Optionen zur Verfügung stehen:
Der Dateiname ist erforderlich. Alle anderen Argumente sind optional – und die meisten anderen Argumente müssen Sie wahrscheinlich nicht kennen. Hier sind die beiden gebräuchlichsten:
Arbeitsmappe schreibgeschützt öffnen
Wenn die Arbeitsmappe schreibgeschützt geöffnet ist, können Sie nicht über die Originaldatei speichern. Dadurch wird verhindert, dass die Datei vom Benutzer bearbeitet werden kann.
Workbooks.Open "C:\VBA-Ordner\Musterdatei_1.xlsx", , True
Kennwortgeschützte Arbeitsmappe öffnen
Eine Arbeitsmappe kann kennwortgeschützt sein. Verwenden Sie diesen Code, um die kennwortgeschützte Arbeitsmappe zu öffnen:
Workbooks.Open "C:\VBA-Ordner\Musterdatei_1.xlsx", , , "Kennwort"
Syntaxhinweise zum Öffnen der Arbeitsmappe
Beachten Sie, dass in der obigen Abbildung eine Klammer „(“ eingefügt wurde, um die Syntax zu verdeutlichen. Wenn Sie Klammern verwenden, wenn Sie mit Workbooks.Open arbeiten, müssen Sie die Arbeitsmappe einer Variablen zuweisen:
Sub WB_Oeffnen()
Dim wb As Workbook
Set wb = Workbooks.Open("C:\VBA-Ordner\Musterdatei 1.xlsx", True, True)
End Sub
Schließen einer Arbeitsmappe in VBA
Bestimmte Arbeitsmappe schließen
Ähnlich wie beim Öffnen einer Arbeitsmappe gibt es mehrere Möglichkeiten, eine Datei zu schließen. Wenn Sie wissen, welche Datei Sie schließen möchten, können Sie den folgenden Code verwenden:
Workbooks.Close ("C:\VBA-Ordner\Musterdatei_1.xlsx")
Diese Codezeile schließt die Datei „Beispieldatei 1“, wenn sie geöffnet ist. Wenn nicht, wird ein Fehler zurückgegeben, so dass Sie sich um die Fehlerbehandlung kümmern sollten.
Aktive Arbeitsmappe schließen
Wenn Sie die derzeit aktive Arbeitsmappe schließen möchten, können Sie dies mit dieser Codezeile tun:
ActiveWorkbook.Close
Alle geöffneten Arbeitsmappen schließen
Um alle geöffneten Arbeitsmappen zu schließen, können Sie einfach diesen Code verwenden:
Workbooks.Close
Erste geöffnete Arbeitsmappe schließen
Damit wird die erste geöffnete/erstellte Arbeitsmappe geschlossen:
Workbooks(1).Close
Ersetzen Sie 1 durch 2, um die zweite geöffnete/erstellte Arbeitsmappe zu schließen und so weiter.
Schließen ohne zu speichern
Schließt eine Arbeitsmappe ohne zu speichern und ohne die Aufforderung zum Speichern anzuzeigen:
ActiveWorkbook.Close savechanges:=False
Speichern und Schließen ohne Eingabeaufforderung
Auf ähnliche Weise wird eine Arbeitsmappe gespeichert und geschlossen, ohne dass die Eingabeaufforderung zum Speichern angezeigt wird:
ActiveWorkbook.Close savechanges:=True
Hinweis: Es gibt mehrere andere Möglichkeiten, um anzugeben, ob eine Arbeitsmappe gespeichert werden soll oder nicht, und auch, ob Eingabeaufforderungen angezeigt werden sollen oder nicht. Dies wird hier ausführlicher behandelt.
Andere Beispiele für das Öffnen von Arbeitsmappen
Mehrere neue Arbeitsmappen öffnen
Mit dieser Prozedur werden mehrere neue Arbeitsmappen geöffnet, wobei die neuen Arbeitsmappen einem Array zugewiesen werden:
Sub Mehrere_Neue_Arbeitsmappen_Oeffnen()
Dim arrWb(3) As Workbook
Dim i As Integer
For i = 1 To 3
Set arrWb(i) = Workbooks.Add
Next i
End Sub
Alle Excel-Arbeitsmappen in einer Mappe öffnen
Mit dieser Prozedur werden alle Excel-Arbeitsmappen in einem Ordner geöffnet, wobei die Auswahlmöglichkeit des Dialogs Datei öffnen verwendet wird.
Sub Mehrere_Neue_Arbeitsmappen_In_Ordner_Oeffnen()
Dim wb As Workbook
Dim dlgFD As FileDialog
Dim strOrdner As String
Dim strDateiname As String
Set dlgFD = Application.FileDialog(msoFileDialogFolderPicker)
If dlgFD.Show = -1 Then
strOrdner = dlgFD.SelectedItems(1) & Application.PathSeparator
strDateiname = Dir(strOrdner & "*.xls*")
Do While strDateiname <> ""
Set wb = Workbooks.Open(strOrdner & strDateiname)
strDateiname = Dir
Loop
End If
End Sub
Prüfen, ob eine Arbeitsmappe geöffnet ist
Mit dieser Prozedur wird geprüft, ob eine Arbeitsmappe geöffnet ist:
Sub TestenNachArbeitsmappenNamen()
Dim wb As Workbook
For Each wb In Workbooks
If wb.Name = "Neues-Microsoft-Excel-Arbeitsblatt.xls" Then
MsgBox "Gefunden"
Exit Sub 'Aufruf des Codes hier, wir beenden nur für den Moment.
End If
Next
End Sub
Ereignis Workbook_Open
VBA-Ereignisse sind „Auslöser“, die VBA anweisen, bestimmten Code auszuführen. Sie können Arbeitsmappenereignisse für das Öffnen, Schließen, vor dem Speichern, nach dem Speichern und mehr festlegen.
Lesen Sie unser Tutorial zum Workbook_Open Event, um mehr über die automatische Ausführung von Makros beim Öffnen einer Arbeitsmappe zu erfahren.