Alle Workbooks bis auf eines mit VBA schließen
Schritt-für-Schritt-Anleitung
Um alle offenen Workbooks in Excel mit VBA zu schließen, außer einem benannten Workbook, kannst du den folgenden Code verwenden. Dieser Code nutzt eine Schleife, um durch alle offenen Workbooks zu iterieren und schließt jedes Workbook, das nicht das angegebene ist.
Sub AlleSchliessen()
Dim Wkb As Workbook
For Each Wkb In Workbooks
If Wkb.Name <> ThisWorkbook.Name And Wkb.Name <> "Hauptprogramm.xls" Then
Wkb.Close SaveChanges:=False
End If
Next Wkb
End Sub
In diesem Beispiel bleibt das Workbook mit dem Namen "Hauptprogramm.xls" geöffnet. Du kannst den Namen nach Belieben anpassen.
Häufige Fehler und Lösungen
Fehler: Der Code schließt das Workbook, in dem das Makro läuft.
Lösung: Stelle sicher, dass du ThisWorkbook.Name
verwendest, um zu überprüfen, ob das aktuelle Workbook das ist, das du offen halten möchtest. So wird vermieden, dass das Makro sich selbst schließt.
Alternative Methoden
Falls du eine andere Methode zur Schließung der Workbooks bevorzugst, kannst du auch eine Eingabeaufforderung verwenden, um den Namen des zu schützenden Workbooks festzulegen:
Sub AlleSchliessenMitEingabe()
Dim Haupt As String
Haupt = InputBox("Name der Haupt-Datei: ", "Schliesser", "Hauptprogramm.xls")
Dim WB As Workbook
For Each WB In Workbooks
If Not WB.Name = Haupt Then
WB.Close SaveChanges:=False
End If
Next WB
End Sub
Hierbei wird der Benutzer aufgefordert, den Namen des Workbooks einzugeben, das geöffnet bleiben soll.
Praktische Beispiele
Ein praktisches Beispiel für die Anwendung der For Each
-Schleife:
Sub AlleWorkbooksSchliessen()
Dim wb As Workbook
For Each wb In Workbooks
' Aktuelles Workbook schließen, wenn es nicht "Tagesbilanz.xls" ist
If wb.Name <> "Tagesbilanz.xls" Then
wb.Close SaveChanges:=False
End If
Next wb
End Sub
In diesem Beispiel bleibt das Workbook "Tagesbilanz.xls" geöffnet, während alle anderen Workbooks geschlossen werden.
Tipps für Profis
- Fehlerbehandlung: Füge eine Fehlerbehandlung hinzu, um sicherzustellen, dass dein Makro auch bei unerwarteten Bedingungen stabil bleibt.
On Error Resume Next
- Sichtbarkeit: Verwende
Application.ScreenUpdating = False
, um das Flackern des Bildschirms zu vermeiden, während die Workbooks geschlossen werden.
FAQ: Häufige Fragen
1. Frage: Was bewirkt ThisWorkbook.Name
?
Antwort: ThisWorkbook.Name
gibt den Namen des Workbooks zurück, in dem das Makro ausgeführt wird. Es sorgt dafür, dass dieses Workbook nicht geschlossen wird.
2. Frage: Wie kann ich mehrere Workbooks offen halten?
Antwort: Du kannst die Bedingung in der If
-Anweisung erweitern, um mehrere Workbook-Namen zu berücksichtigen:
If Wkb.Name <> ThisWorkbook.Name And Wkb.Name <> "Hauptprogramm.xls" And Wkb.Name <> "Zusatzdatei.xls" Then
Mit diesen Anleitungen kannst du effektiv alle offenen Workbooks bis auf eines in Excel VBA schließen.