Wenn Sie mit Microsoft Excel arbeiten und Probleme haben, mehrere geöffnete Dateien gleichzeitig zu schließen, können Sie VBA (Visual Basic for Applications) verwenden, um diesen Prozess zu automatisieren. VBA ist Teil von Excel und bietet die Möglichkeit, Makros zu erstellen und auszuführen, um verschiedene Aufgaben zu automatisieren.
Das manuelle Schließen mehrerer Dateien kann ein ziemlich mühsamer Prozess sein, insbesondere wenn viele Dateien gleichzeitig geöffnet sind. Aber mit VBA können Sie diese Aufgabe erheblich vereinfachen und Zeit sparen. Nachdem Sie mehrere Codezeilen geschrieben haben, können Sie alle geöffneten Excel-Dateien auf einmal schließen.
Öffnen Sie zunächst den VBA-Editor, indem Sie "Alt + F11" drücken oder im Excel-Menü "Entwickler > Visual Basic-Editor" auswählen. Erstellen Sie im VBA-Editor ein neues Modul, indem Sie mit der rechten Maustaste auf den Speicherort Ihrer Projekte klicken und Einfügen > Modul auswählen.
Nachdem Sie ein neues Modul erstellt haben, fügen Sie den folgenden Code ein:
Sub CloseAllWorkbooks()
'Dieser Code schließt alle geöffneten Excel-Dateien.'
Dim wb As Workbook
On Error Resume Next
For Each wb In Workbooks
If wb.ReadOnly = False Then
wb.Close SaveChanges:=False
End If
Next wb
End Sub
Nachdem der Code kopiert wurde, speichern Sie das Modul, indem Sie "Strg + S" drücken. Sie können das Makro jetzt ausführen, indem Sie auf "F5" klicken oder im Excel-Menü "Entwickler > Makro" auswählen. Als Ergebnis werden alle geöffneten Excel-Dateien geschlossen, mit Ausnahme der schreibgeschützten Dateien.
So schließen Sie alle Excel-Dateien in VBA: Schritte zum Ausführen
Schritt 1: Öffnen Sie den VBA-Codeeditor in Excel, indem Sie eine Tastenkombination drücken Alt + F11.
Schritt 2: Erstellen Sie ein neues Modul, indem Sie mit der rechten Maustaste auf das VBA-Projekt klicken und im Kontextmenü "Einfügen" -> "Modul" auswählen.
Schritt 3: Fügen Sie den folgenden Code in das Modul ein:
Dim wb As Workbook
For Each wb In Workbooks
'Alle Dateien außer dem aktiven schließen
If Not wb Is ActiveWorkbook Then
Schritt 4: Drücken Sie eine Tastenkombination Ctrl + S, um die Änderungen im VBA-Projekt zu speichern.
Schritt 5: Schließen Sie den VBA-Codeeditor, indem Sie eine Tastenkombination drücken Alt + Q.
Schritt 6: Kehren Sie zum Hauptfenster von Excel zurück und führen Sie das Makro durch Drücken einer Tastenkombination aus Alt + F8. Suchen Sie in der Liste der Makros nach "CloseAllWorkbooks" und klicken Sie auf die Schaltfläche Ausführen. Alle Excel-Dateien außer der aktiven werden geschlossen.
Anmerkung: Speichern Sie alle erforderlichen Daten, bevor Sie das Makro ausführen, da die Excel-Dateien geschlossen werden, ohne die Änderungen zu speichern.
Erstellen eines neuen Moduls in VBA
Um Makros in VBA (Visual Basic for Applications) in Excel zu schreiben, müssen Sie ein neues Modul erstellen. Dadurch können Sie Ihren eigenen Programmcode entwickeln und ausführen, der in Excel ausgeführt wird.
Die Schritte zum Erstellen eines neuen Moduls in VBA sind wie folgt:
- Öffnen Sie die Excel-Arbeitsmappe, in der Sie ein neues Modul erstellen möchten.
- Klicken Sie auf der Hauptsymbolleiste von Excel auf die Registerkarte Entwickler.
- Wenn die Registerkarte Entwickler nicht in der Symbolleiste angezeigt wird, aktivieren Sie sie wie folgt: Wählen Sie Datei => Optionen => Excel-Optionen => Beliebt => Entwickler-Registerkarte in der Multifunktionsleiste anzeigen und klicken Sie auf OK.
- Suchen Sie auf der Registerkarte Entwickler die Gruppe Code und wählen Sie Einfügen => Modul.
Nachdem Sie diese Schritte ausgeführt haben, erhalten Sie ein neues VBA-Modul, das im VBA-Editor geöffnet wird. In diesem Modul können Sie Ihren VBA-Code schreiben, der beim Ausführen von Makros in Excel ausgeführt wird.
Alle VBA-Funktionen und -Methoden stehen Ihnen zur Verfügung, um mit Arbeitsmappen, Arbeitsblättern, Zellen und anderen Excel-Objekten zu arbeiten. Sie können VBA verwenden, um Prozesse in Excel zu automatisieren, benutzerdefinierte Funktionen zu erstellen, Daten zu verarbeiten und vieles mehr.
Verwenden eines Workbooks-Objekts
Hier sind einige Beispiele für die Anwendung eines Workbooks-Objekts:
- Ein Buch öffnen: mit der Open-Methode des Workbooks-Objekts können Sie eine Arbeitsmappe in ihrem vollständigen Pfad öffnen.
- Speichern einer Arbeitsmappe: mit der Save- oder SaveAs-Methode des Workbook-Objekts können Sie die Arbeitsmappe mit den Änderungen speichern. Sie können die Arbeitsmappe auch in verschiedenen Formaten speichern, z. B. .xlsx oder .csv.
- Buch schließen: mit der Close-Methode des Workbook-Objekts können Sie die Arbeitsmappe schließen. Sie können auch auswählen, ob die Änderungen vor dem Schließen gespeichert werden sollen oder nicht.
- Hinzufügen einer neuen Arbeitsmappe: mit der Add-Methode des Workbooks-Objekts können Sie eine neue Arbeitsmappe erstellen und der Workbooks-Auflistung hinzufügen.
- Bücher überbrücken: mit einer Schleife oder einer For Each-Anweisung können Sie alle Arbeitsmappen in der Workbooks-Sammlung durchlaufen und für jede Arbeitsmappe bestimmte Vorgänge ausführen.
Mit dem Workbooks-Objekt können Sie alle geöffneten Arbeitsmappen in Excel überwachen und die erforderlichen Vorgänge mit ihnen durchführen. Dies ist besonders nützlich, wenn Sie mit vielen Arbeitsmappen arbeiten oder bestimmte Aktionen automatisieren möchten.
Durchlaufen, um alle geöffneten Dateien zu durchlaufen
Um alle geöffneten Dateien in Excel mit VBA zu schließen, müssen wir alle aktiven Arbeitsmappen durchlaufen und sie nacheinander schließen. Dies kann durch eine Schleife erfolgen, die durch jede geöffnete Datei läuft.
Hier ist ein Beispielcode, der veranschaulicht, wie eine Schleife verwendet wird, um alle aktiven Arbeitsmappen zu durchlaufen:
Sub CloseAllWorkbooks() Dim wb As Workbook 'Wir durchlaufen jede aktive Arbeitsmappe For Each wb In Application.Workbooks 'Schließen Sie die Arbeitsmappe, ohne die wb-Änderungen zu speichern.Close SaveChanges:=False Next wb End Sub
Dieser Code verwendet ein "For Each" -Schleifenkonstrukt, mit dem Sie durch eine Sammlung von Objekten (in diesem Fall aktive Arbeitsmappen) iterieren können. Innerhalb einer Schleife wird jede Arbeitsmappe geschlossen, ohne die Änderungen zu speichern.
Bei Bedarf können Sie dem Code eine Validierung hinzufügen, um die Änderungen zu speichern, bevor Sie die Arbeitsmappe schließen:
Sub CloseAllWorkbooks() Dim wb As Workbook 'Wir durchlaufen jede aktive Arbeitsmappe For Each wb In Application.Workbooks 'Überprüfen Sie, ob Änderungen an der If wb-Arbeitsmappe vorgenommen wurden.Saved = False Then 'Wenn die Änderungen nicht gespeichert wurden, fragen wir den Benutzer, ob er speichern soll oder nicht result = MsgBox("Möchten Sie die Änderungen speichern unter " & wb.Name & "?", vbQuestion + vbYesNoCancel, "Möchten Sie die Änderungen speichern?") 'Abhängig vom Ergebnis der benutzerdefinierten Auswahl Select Case result Case vbYes 'Speichern wir die Änderungen und schließen die wb-Arbeitsmappe.Close SaveChanges:=True Case vbNo 'Schließen Sie die Arbeitsmappe, ohne die wb-Änderungen zu speichern.Close SaveChanges:=False Case vbCancel 'Schließen der Arbeitsmappe abbrechen Exit Sub End Select Else 'Schließen Sie die Arbeitsmappe, ohne die wb-Änderungen zu speichern.Close SaveChanges:=False End If Next wb End Sub
Jetzt können Sie diese Schleife verwenden, um alle geöffneten Dateien in Excel mit VBA zu schließen. Rufen Sie einfach die CloseAllWorkbooks-Prozedur in Ihrem Code auf, und alle geöffneten Arbeitsmappen werden entsprechend geschlossen.
Überprüfen, ob die Datei gerade geöffnet ist
Dazu muss die Funktion verwendet werden On Error Resume Next. Es ermöglicht Ihnen, den Code weiter auszuführen und Fehler zu ignorieren. Anschließend wird versucht, die Datei mithilfe der Methode im schreibgeschützten Modus zu öffnen Workbooks.Open. Wenn die Datei geöffnet ist, wird ein Fehler generiert, der im Block behandelt werden kann On Error.
Sub CheckFileIsOpen()Dim wb As WorkbookDim filePath As String' Путь к файлуfilePath = "C:\Путь\к\файлу.xlsx"' Попытка открыть файл в режиме только для чтенияOn Error Resume NextSet wb = Workbooks.Open(filePath, ReadOnly:=True)' Проверка, удалось ли открыть файлIf Not wb Is Nothing Then' Файл открытMsgBox "Файл открыт"wb.CloseElse' Файл не открытMsgBox "Файл не открыт"End IfOn Error GoTo 0End Sub
In diesem Codebeispiel ist eine Variable filePath enthält den zu überprüfenden Dateipfad. Nach der Verwendung der Funktion Workbooks.Open Variable wb verweist auf eine geöffnete Datei, wenn sie erfolgreich geöffnet wurde. Anschließend wird überprüft, ob der Versuch erfolgreich war, die Datei zu öffnen, und die entsprechende Meldung wird dem Benutzer mithilfe der Funktion angezeigt MsgBox. Wenn die Datei geöffnet ist, wird sie mit einer Methode geschlossen wb.Close