VBA – Arbeitsmappe öffnen/schließen

Written by

Mel Jenkins

Reviewed by

Steve Rynearson

Translated by

Zakarya El Oirzadi

Last updated on August 22, 2022

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

vba dialogfenster datei oeffnen

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:

vba arbeitsmappe oeffnen syntax

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.

vba-free-addin

Add-In für VBA-Code-Beispiele

Auf alle Code-Beispiele aus unserer Website einfach zugreifen.

Navigieren Sie einfach zum Menü, klicken Sie darauf und der Code wird direkt in Ihr Modul eingefügt. .xlam add-in.

(Keine Installation erforderlich!)

Kostenloser Download

Return to VBA Code Examples