In diesem Tutorial erfahren Sie, wie Sie mit VBA die Excel-Arbeitsmappe auf verschiedene Weise öffnen und schließen.
Mit VBA können Sie Dateien mit den Standardmethoden öffnen oder schließen .Offen und .Nah dran.
Wenn Sie erfahren möchten, wie Sie überprüfen können, ob eine Datei vorhanden ist, bevor Sie versuchen, die Datei zu öffnen, klicken Sie auf diesen Link: VBA-Datei existiert
Öffnen Sie eine Arbeitsmappe in VBA
Arbeitsmappe aus Pfad öffnen
Wenn Sie wissen, welche Datei Sie öffnen möchten, können Sie deren vollständigen Pfadnamen in der Funktion angeben. Hier ist der Code:
1 | Workbooks.Open "C:\VBA-Ordner\Beispieldatei 1.xlsx" |
Diese Codezeile öffnet die Datei „Beispieldatei 1“ aus dem „VBA-Ordner“.
Arbeitsmappe öffnen - ActiveWorkbook
Wenn Sie eine Arbeitsmappe öffnen, wird sie automatisch zur ActiveWorkbook. Sie können auf die neu geöffnete Arbeitsmappe wie folgt verweisen:
1 | ActiveWorkbook.Speichern |
Wenn Sie auf ein Blatt oder einen Bereich verweisen und den Namen der Arbeitsmappe weglassen, geht VBA davon aus, dass Sie sich auf die ActiveWorkbook beziehen:
1 | Sheets("Sheet1").Name = "Eingabe" |
Arbeitsmappe öffnen und einer Variablen zuweisen
Sie können auch eine Arbeitsmappe öffnen und direkt einer Objektvariablen zuweisen. Dieses Verfahren öffnet eine Arbeitsmappe für die wb Variable und speichern Sie dann die Arbeitsmappe.
123456 | Unter OpenWorkbookToVariable()Dim wb als ArbeitsmappeSet wb = Workbooks.Open("C:\VBA-Ordner\Beispieldatei 1.xlsx")wb.SpeichernEnd Sub |
Das Zuweisen von Arbeitsmappen zu Variablen beim Öffnen ist der beste Weg, um den Überblick über Ihre Arbeitsmappen zu behalten
Dialog zum Öffnen der Arbeitsmappe
Sie können auch das Dialogfeld Datei öffnen der Arbeitsmappe auslösen. Dies ermöglicht dem Benutzer, zu einer Datei zu navigieren und sie zu öffnen:
12345678 | Unter OpenWorkbook ()Dim strFile As StringstrFile = Application.GetOpenFilename()Arbeitsmappen.Öffnen (strFile)End Sub |
Wie Sie in Bild 1 sehen können, können Benutzer bei diesem Ansatz auswählen, welche Datei geöffnet werden soll. Das Dialogfeld Datei öffnen kann stark angepasst werden. Sie können standardmäßig einen bestimmten Ordner verwenden, auswählen, welche Dateitypen sichtbar sind (z. B. nur xlsx) und mehr. Lesen Sie unser Tutorial zum Dialogfeld "Datei öffnen" für detaillierte Beispiele.
Neue Arbeitsmappe öffnen
Diese Codezeile öffnet eine neue Arbeitsmappe:
1 | Arbeitsmappen.Hinzufügen |
Neue Arbeitsmappe für Variable öffnen
Dieses Verfahren öffnet eine neue Arbeitsmappe und weist sie der Variablen wb zu:
1234 | Unter OpenNewWorkbook()Dim wb als ArbeitsmappeSet wb = Workbooks.AddEnd Sub |
Arbeitsmappensyntax öffnen
Wenn Sie Workbooks.Open verwenden, stellen Sie möglicherweise fest, 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 die beiden häufigsten:
Arbeitsmappe schreibgeschützt öffnen
Wenn die Arbeitsmappe schreibgeschützt geöffnet ist, können Sie die Originaldatei nicht überschreiben. Dadurch wird verhindert, dass die Datei vom Benutzer bearbeitet wird.
1 | Workbooks.Open "C:\VBA Folder\Sample file 1.xlsx", , True |
Passwortgeschützte Arbeitsmappe öffnen
Eine Arbeitsmappe kann kennwortgeschützt sein. Verwenden Sie diesen Code, um die passwortgeschützte Arbeitsmappe zu öffnen:
1 | Workbooks.Open "C:\VBA-Ordner\Beispieldatei 1.xlsx", , , "Passwort" |
Syntaxhinweise zur Arbeitsmappe öffnen
Beachten Sie, dass wir im obigen Bild eine Klammer „(“ eingefügt haben, um die Syntax anzuzeigen. Wenn Sie beim Arbeiten mit Workbooks.Open Klammern verwenden, müssen Sie die Arbeitsmappe einer Variablen zuweisen:
1234 | Unter OpenWB()Dim wb als ArbeitsmappeSet wb = Workbooks.Open("C:\VBA-Ordner\Beispieldatei 1.xlsx", True, True)End Sub |
Schließen Sie eine Arbeitsmappe in VBA
Spezifische 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:
1 | Workbooks.Close ("C:\VBA-Ordner\Beispieldatei 1.xlsx") |
Diese Codezeile schließt die Datei „Beispieldatei 1“, wenn sie geöffnet ist. Wenn nicht, wird ein Fehler zurückgegeben, daher sollten Sie sich um die Fehlerbehandlung kümmern.
Aktive Arbeitsmappe schließen
Wenn Sie die aktuell aktive Arbeitsmappe schließen möchten, können Sie dies mit dieser Codezeile tun:
1 | ActiveWorkbook.Schließen |
Alle geöffneten Arbeitsmappen schließen
Um alle geöffneten Arbeitsmappen zu schließen, können Sie einfach diesen Code verwenden:
1 | Arbeitsmappen.Schließen |
Erste geöffnete Arbeitsmappe schließen
Dadurch wird die erste geöffnete/erstellte Arbeitsmappe geschlossen:
1 | Arbeitsmappen(1).Schließen |
Ersetzen Sie 1 durch 2, um die zweite geöffnete / erstellte Arbeitsmappe zu schließen usw.
Schließen ohne speichern
Dadurch wird eine Arbeitsmappe geschlossen, ohne zu speichern und ohne die Aufforderung zum Speichern anzuzeigen:
1 | ActiveWorkbook.Close savechanges:=False |
Speichern und schließen ohne Aufforderung
Auf ähnliche Weise wird eine Arbeitsmappe gespeichert und geschlossen, ohne dass die Speicheraufforderung angezeigt wird:
1 | ActiveWorkbook.Close savechanges:=True |
Hinweis: Es gibt mehrere andere Möglichkeiten, anzugeben, ob eine Arbeitsmappe gespeichert werden soll oder nicht und ob Eingabeaufforderungen angezeigt werden oder nicht. Dies wird hier genauer besprochen.
Andere offene Beispiele für Arbeitsmappen
Öffnen Sie mehrere neue Arbeitsmappen
Dieses Verfahren öffnet mehrere neue Arbeitsmappen und weist die neuen Arbeitsmappen einem Array zu:
12345678 | Unter OpenMultipleNewWorkbooks()Dim arrWb(3) als ArbeitsmappeDim i As IntegerFür i = 1 bis 3Set arrWb(i) = Workbooks.AddAls nächstesEnd Sub |
Alle Excel-Arbeitsmappen in einem Ordner öffnen
Bei diesem Verfahren werden alle Excel-Arbeitsmappen in einem Ordner mit der Auswahl zum Öffnen des Dateidialogs geöffnet.
12345678910111213141516 | Unter OpenMultipleWorkbooksInFolder()Dim wb als ArbeitsmappeDim dlgFD As FileDialogDim strOrdner als StringDim strFileName als StringSet dlgFD = Application.FileDialog(msoFileDialogFolderPicker)Wenn dlgFD.Show = -1 ThenstrFolder = dlgFD.SelectedItems(1) & Application.PathSeparatorstrFileName = Dir(strFolder & "*.xls*")Do While strFileName ""Set wb = Workbooks.Open(strFolder & strFileName)strFileName = DirSchleifeEnde WennEnd Sub |
Überprüfen Sie, ob eine Arbeitsmappe geöffnet ist
Dieses Verfahren testet, ob eine Arbeitsmappe geöffnet ist:
1234567891011 | Sub TestByWorkbookName()Dim wb als ArbeitsmappeFür jedes wb in ArbeitsmappenIf wb.Name = "Neues Microsoft Excel Worksheet.xls" ThenMsgBox "Gefunden"Beenden Sie den Anrufcode für den Sub hier, wir beenden ihn erst einmalEnde WennNächsteEnd Sub |
Workbook_Open-Ereignis
VBA-Ereignisse sind „Trigger“, 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 einrichten.
Lesen Sie unser Workbook_Open Event-Tutorial, um mehr über das automatische Ausführen von Makros beim Öffnen einer Arbeitsmappe zu erfahren.