ActiveWindow.Close ohne Speichern in Excel VBA
Schritt-für-Schritt-Anleitung
Um ein aktives Fenster in Excel VBA zu schließen, ohne die Änderungen zu speichern, kannst du die folgende Methode verwenden. Das Ziel ist, das Speichern-unter-Fenster zu vermeiden.
- Aktiviere das gewünschte Workbook.
- Stelle sicher, dass du die Änderungen nicht speicherst, indem du den Status des Workbooks auf
Saved setzt.
- Schließe das Workbook mit der Methode
.Close.
Hier ist ein Beispielcode:
Sub CloseWorkbookWithoutSaving()
' Aktiviere das Workbook
Workbooks("Data.dbf").Activate
' Setze den Status auf gespeichert
Workbooks("Data.dbf").Saved = True
' Schließe das Workbook ohne Speichern
Workbooks("Data.dbf").Close
End Sub
Mit dieser Methode wird ActiveWindow.Close savechanges = False überflüssig, da Excel denkt, dass keine Änderungen vorgenommen wurden.
Häufige Fehler und Lösungen
Alternative Methoden
Eine alternative Methode ist die Verwendung von ActiveWorkbook.Close, um das aktive Workbook zu schließen. Hierbei kannst du ebenfalls die savechanges-Option verwenden:
ActiveWorkbook.Close savechanges:=False
Diese Methode funktioniert ähnlich wie ActiveWindow.Close, ist jedoch spezifischer für das Workbook.
Praktische Beispiele
Hier sind einige praktische Beispiele, wie du das Schließen von Excel-Fenstern ohne Speichern implementieren kannst:
- Kopieren und Schließen einer Datei:
Sub CopyAndClose()
Range("A17:B18").Copy
Windows("data.DBF").Activate
Range("A2").PasteSpecial Paste:=xlFormats
' Setze den Status und schließe
Workbooks("Data.dbf").Saved = True
Workbooks("Data.dbf").Close
End Sub
- Direktes Schließen eines aktiven Fensters:
Sub CloseActiveWindow()
ActiveWindow.Close savechanges:=False
End Sub
Tipps für Profis
- Verwende
Workbooks statt ActiveWindow für mehr Kontrolle über die zu schließenden Dateien.
- Teste deinen Code in einer sicheren Umgebung, um unbeabsichtigte Datenverluste zu vermeiden.
- Wenn du mit mehreren Fenstern arbeitest, verwende den Namen des Workbooks für mehr Klarheit.
FAQ: Häufige Fragen
1. Kann ich ActiveWindow.Close in allen Excel-Versionen verwenden?
Ja, allerdings kann der Befehl in älteren Versionen nicht wie erwartet funktionieren. Es empfiehlt sich, die VBA-Referenzen auf die eigene Version zu prüfen.
2. Was passiert, wenn ich Workbooks("Data.dbf").Saved = True nicht setze?
In diesem Fall wird Excel das Speichern-unter-Fenster anzeigen, wenn du versuchst, das Workbook zu schließen, selbst wenn keine Änderungen vorgenommen wurden.