Excel VBA: Speichern und Schließen einer Datei
Schritt-für-Schritt-Anleitung
Um eine Excel-Datei mit VBA zu speichern und anschließend zu schließen, kannst du den folgenden Code verwenden. Dieser wird in ein Makro eingefügt, das durch einen Button oder eine andere Aktion ausgelöst wird.
Private Sub CommandButton1_Click()
' Speichern der Arbeitsmappe
ThisWorkbook.Save
' Speichern unter einem neuen Namen
ThisWorkbook.SaveAs "C:\Sicher\" & ThisWorkbook.Name
' Beenden von Excel
Application.Quit
End Sub
Dieser Code speichert die aktuelle Arbeitsmappe und legt eine Sicherungskopie im Ordner "C:\Sicher" ab, bevor Excel geschlossen wird. Stelle sicher, dass du den Pfad an deine Bedürfnisse anpasst.
Häufige Fehler und Lösungen
-
Die Originaldatei wird überschrieben
Wenn nur die Originaldatei gespeichert wird und keine Sicherungskopie erstellt wird, überprüfe, ob der Pfad C:\Sicher\
existiert und ob du die richtigen Berechtigungen hast.
-
Excel schließt nicht
Wenn Excel nach dem Ausführen des Codes nicht schließt, stelle sicher, dass Application.Quit
korrekt eingegeben wurde. Überprüfe auch, ob es möglicherweise laufende Prozesse gibt, die das Schließen verhindern.
-
Bestätigungsdialog beim Überwriting
Wenn du die Bestätigungsnachricht "Die Datei existiert bereits" verhindern möchtest, kannst du Folgendes hinzufügen:
Application.DisplayAlerts = False
ThisWorkbook.SaveAs "C:\Sicher\" & ThisWorkbook.Name
Application.DisplayAlerts = True
Alternative Methoden
Falls du eine andere Methode suchst, um eine Excel-Datei zu speichern und zu schließen, kannst du auch ein Makro in einem Modul erstellen, das ohne einen Button ausgeführt wird. Hier ein Beispiel:
Sub SpeichernUndSchließen()
ThisWorkbook.Save
Application.DisplayAlerts = False
ThisWorkbook.SaveAs "C:\Sicher\" & ThisWorkbook.Name
Application.DisplayAlerts = True
Application.Quit
End Sub
Dieses Makro kann direkt über das Makro-Menü in Excel aufgerufen werden.
Praktische Beispiele
-
Beispiel 1: Automatisches Speichern beim Schließen
Private Sub Workbook_BeforeClose(Cancel As Boolean)
ThisWorkbook.Save
End Sub
Dieses Beispiel speichert die Arbeitsmappe automatisch, bevor Excel geschlossen wird.
-
Beispiel 2: Abfrage beim Speichern
Private Sub CommandButton1_Click()
If MsgBox("Möchtest du die Datei speichern?", vbYesNo) = vbYes Then
ThisWorkbook.Save
Application.Quit
End If
End Sub
Hier wird der Benutzer gefragt, ob er die Datei speichern möchte, bevor Excel geschlossen wird.
Tipps für Profis
-
Verwende Option Explicit
: Dieser Befehl zwingt dich, alle Variablen zu deklarieren, was Fehler reduziert und den Code lesbarer macht.
-
Fehlerbehandlung: Implementiere eine Fehlerbehandlung, um unerwartete Probleme zu vermeiden:
On Error GoTo Fehlerbehandlung
' Dein Code hier
Exit Sub
Fehlerbehandlung:
MsgBox "Ein Fehler ist aufgetreten: " & Err.Description
-
Speichern unter Dialog: Wenn du den Benutzer einen Speicherort auswählen lassen möchtest, kannst du den Application.GetSaveAsFilename
-Dialog verwenden.
FAQ: Häufige Fragen
1. Wie kann ich die automatische Speicherung beim Schließen aktivieren?
Du kannst das Event Workbook_BeforeClose
nutzen, um die Arbeitsmappe vor dem Schließen zu speichern.
2. Was mache ich, wenn Excel beim Schließen nicht reagiert?
Überprüfe, ob Hintergrundprozesse laufen oder ob das Makro in einer Endlosschleife steckt. Schließe Excel gegebenenfalls über den Task-Manager.