Speichern NUR unter neuem Namen in Excel
Schritt-für-Schritt-Anleitung
Um sicherzustellen, dass eine Excel-Datei nur unter einem neuen Namen gespeichert werden kann, kannst Du ein VBA-Makro verwenden. Folge diesen Schritten:
-
Öffne den VBA-Editor:
- Drücke
ALT + F11, um den VBA-Editor zu öffnen.
-
Füge das Makro ein:
- Doppelklicke auf „DieseArbeitsmappe“ im Projektfenster.
- Kopiere und füge den folgenden Code ein:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim FileSaveName As String
On Error GoTo Fehler
Cancel = True 'bricht das speichern ab
FileSaveName = Application.GetSaveAsFilename()
If FileSaveName <> "" And FileSaveName <> Me.FullName Then
Application.EnableEvents = False
Me.SaveAs FileSaveName
Else
MsgBox "Speichern unter diesem Namen nicht erlaubt"
End If
Fehler:
Application.EnableEvents = True
End Sub
-
Schließe den VBA-Editor:
- Speichere Deine Änderungen und schließe den Editor.
-
Teste das Makro:
- Versuche, die Datei zu speichern. Es sollte nun der „Speichern unter“-Dialog erscheinen.
Häufige Fehler und Lösungen
-
Fehler: Falscher Pfad im Speichern unter Fenster:
- Wenn das „Speichern unter“-Fenster einen falschen Pfad anzeigt, kannst Du den Code erweitern, um den aktuellen Pfad zu setzen. Verwende dazu:
Pfad = Me.Path
ChDrive Left(Pfad, InStr(Pfad, ":"))
ChDir Pfad
-
Fehler: Makro funktioniert nicht richtig:
- Achte darauf, dass Du in der Datei die Makros aktiviert hast. Prüfe auch, ob das Makro im richtigen Modul eingefügt wurde.
Alternative Methoden
-
Excel-Vorlage verwenden:
- Du kannst die Datei als Excel-Vorlage (*.xltm) speichern. So wird immer eine Kopie generiert, wenn Du die Vorlage öffnest. Beachte jedoch, dass die Datei dann an einem anderen Ort gespeichert werden könnte.
-
Datei im Schreibschutz-Modus öffnen:
- Du kannst die Datei auch schreibgeschützt öffnen, indem Du im Workbook_Open-Event den Schreibschutz aktivierst. Hier ein Beispiel:
Private Sub Workbook_Open()
If Environ("username") <> "Dein Windows-Anmeldename" Then
Application.DisplayAlerts = False
ThisWorkbook.ChangeFileAccess Mode:=xlReadOnly
Application.DisplayAlerts = True
End If
End Sub
Praktische Beispiele
Hier ist ein Beispiel, das den Dateinamen automatisch mit Datum und Uhrzeit versieht, wenn Du die Datei speicherst:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim Dateiname As String
Cancel = True
Dateiname = ThisWorkbook.Path & "\Dateiname_" & Format(Now, "YYMMDD_hhmm") & ".xlsm"
Application.EnableEvents = False
ThisWorkbook.SaveAs Filename:=Dateiname, FileFormat:=50
Application.EnableEvents = True
End Sub
Tipps für Profis
- Debugging: Füge
Debug.Print Anweisungen im Code hinzu, um den Wert von Variablen während der Ausführung zu überprüfen.
- Sichere deine Arbeit: Nutze die Versionskontrolle oder sichere Kopien, bevor Du Änderungen an der Datei vornimmst.
- Nutze den Entwurfsmodus: Wenn Du Änderungen am Makro vornehmen möchtest, kannst Du den Entwurfsmodus aktivieren. Dadurch werden die Eventmakros nicht ausgeführt.
FAQ: Häufige Fragen
1. Wie kann ich das Makro anpassen, um eine spezifische Dateinamen-Konvention zu verwenden?
Du kannst den Dateinamen im SaveAs-Befehl nach Deinen Vorgaben formatieren, indem Du den gewünschten Text und Variablen kombinierst.
2. Was passiert, wenn ich die Datei unter einem anderen Namen speichere?
Das Makro überprüft, ob der neue Dateiname vom alten abweicht. Wenn ja, wird die Datei unter dem neuen Namen gespeichert. Andernfalls wird eine Fehlermeldung angezeigt.