Speichern verhindern bei Abbrechen in Excel VBA
Schritt-für-Schritt-Anleitung
Um das Speichern einer Excel-Datei zu verhindern, wenn der Benutzer auf „Abbrechen“ klickt, kannst Du das folgende VBA-Skript verwenden. Es wird empfohlen, dies in einer Excel-Datei mit Makros zu tun (.xlsm):
- Öffne Excel und drücke
ALT + F11
, um den VBA-Editor zu starten.
- Füge den folgenden Code in das „ThisWorkbook“-Modul ein:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim FilePath As String
Dim varInput As String
Dim fileSaveName As String
On Error Resume Next
Application.EnableEvents = False
Cancel = True
FilePath = ThisWorkbook.Path & "\"
varInput = Range("R3").Value & "_" & Range("D3").Value & "_" & "Prüfprotokoll DGUV-V3 Schaltschränke Deckblatt"
Filevar = FilePath & varInput & ".xlsm"
fileSaveName = Application.GetSaveAsFilename(Filevar, fileFilter:="Excel Dateien (*.xlsm), *.xlsm")
If fileSaveName <> False Then
ThisWorkbook.SaveAs Filename:=Filevar, FileFormat:=52
End If
Application.EnableEvents = True
End Sub
- Schließe den VBA-Editor und teste das Speichern der Datei.
Häufige Fehler und Lösungen
-
Problem: Datei wird auch bei „Abbrechen“ gespeichert.
- Lösung: Stelle sicher, dass
Cancel = True
gesetzt ist und dass fileSaveName
korrekt überprüft wird.
-
Problem: „Makros deaktiviert - Inhalt aktivieren“ erscheint.
- Lösung: Dies ist normal, wenn Du Makros verwendest. Stelle sicher, dass Du die Datei als .xlsm speicherst und die Makros aktivierst.
-
Problem: Excel überschreibt die Datei beim zweiten Speichern.
- Lösung: Überprüfe, ob der
Cancel
-Wert beim Speichern korrekt gesetzt wird und führe die Abfrage jedes Mal erneut durch.
Alternative Methoden
Wenn Du nicht mit VBA arbeiten möchtest, gibt es auch alternative Methoden:
- Speicheroptionen anpassen: Du kannst die Excel-Einstellungen so anpassen, dass beim Speichern immer ein Dialogfeld angezeigt wird, aber dies erfordert manuelles Eingreifen.
- Zusätzliche Makros: Du kannst auch andere Makros nutzen, die speziell auf die Handhabung von Speichervorgängen ausgelegt sind.
Praktische Beispiele
Hier sind einige praktische Anwendungsfälle für das oben genannte Skript:
-
Prüfprotokoll DGUV-V3 speichern: Nutze dieses Skript, um automatisiert Dateinamen für Prüfprotokolle zu generieren, basierend auf bestimmten Zellwerten in Deiner Excel-Datei.
-
Mit Bezügen zu nicht gespeicherten Dateien speichern: Stelle sicher, dass Du beim Erstellen von Prüfprotokollen stets die aktuellsten Daten verwendest und Speichervorgänge korrekt abwickelst.
Tipps für Profis
-
Debugging: Nutze Debug.Print
innerhalb Deines Codes, um Variablenwerte während der Ausführung zu überwachen.
-
Error Handling: Verwende On Error GoTo
für eine robustere Fehlerbehandlung, anstatt nur On Error Resume Next
, um ungewollte Fehler zu vermeiden.
-
Makros optimieren: Halte Deinen Code so einfach und klar wie möglich, um die Wartung zu erleichtern.
FAQ: Häufige Fragen
1. Kann ich den Code auch ohne ErrorHandler verwenden?
Ja, es ist möglich, den Code ohne ErrorHandler
zu verwenden. Allerdings kann dies dazu führen, dass Du bei einem unerwarteten Fehler keine klare Fehlermeldung erhältst.
2. Wie kann ich das Skript anpassen, um andere Dateiformate zu speichern?
Du kannst die FileFormat
-Option in der SaveAs
-Methode ändern. Zum Beispiel, für .xlsx Dateien, ändere FileFormat:=52
zu FileFormat:=51
.
3. Ist der Code auch für Excel 365 geeignet?
Ja, der Code funktioniert in den meisten modernen Excel-Versionen, einschließlich Excel 365. Stelle sicher, dass Makros aktiviert sind.