Dateiname bei Speichern unter in Excel vorgeben
Schritt-für-Schritt-Anleitung
Um in Excel VBA den Dateinamen beim Speichern unter vorzugeben, kannst Du den folgenden VBA-Code verwenden. Dieser Code sorgt dafür, dass der Dialog nur einmal erscheint und der Dateiname vorab festgelegt wird.
- Öffne die Excel-Datei, in der Du den Code verwenden möchtest.
- Drücke
ALT + F11
, um den Visual Basic for Applications (VBA) Editor zu öffnen.
- Im Projektfenster, suche Dein Workbook (z.B. "VBAProject (DeinDateiname.xlsx)") und klicke darauf.
- Doppelklicke auf "ThisWorkbook".
- Füge den folgenden Code in das Codefenster ein:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim sFilename As String
sFilename = "MeinDateiname" 'Hier kannst Du den gewünschten Dateinamen angeben
If SaveAsUI = True Then
Application.EnableEvents = False
Application.Dialogs(xlDialogSaveAs).Show sFilename & ".xlsm", 52 '52 für .xlsm
Cancel = True
Application.EnableEvents = True
End If
End Sub
- Schließe den VBA-Editor und speichere Deine Excel-Datei.
Jetzt wird beim Klick auf "Speichern unter" der Dateiname automatisch vorgegeben.
Häufige Fehler und Lösungen
-
Doppelter Dialog erscheint:
Wenn der Dialog doppelt erscheint, kann das daran liegen, dass das Ereignis "Workbook_BeforeSave" nicht richtig behandelt wird. Stelle sicher, dass Cancel = True
gesetzt ist, nachdem der Dialog geöffnet wurde.
-
Ereignismakros nicht deaktiviert:
Wenn Du das Ereignis nicht deaktivierst, kann es dazu führen, dass der Dialog erneut aufgerufen wird. Achte darauf, Application.EnableEvents = False
vor dem Dialog und Application.EnableEvents = True
danach zu setzen.
Alternative Methoden
Falls Du eine andere Methode zum Vorbelegen des Dateinamens suchst, kannst Du auch ein UserForm erstellen, das vor dem Speichern unter angezeigt wird. Hier könntest Du dem Benutzer die Möglichkeit geben, den Dateinamen zu ändern, bevor der Speichern-unter-Dialog erscheint.
Praktische Beispiele
Hier ist ein praktisches Beispiel, wie Du den Dateinamen dynamisch basierend auf einem Zellwert festlegen kannst:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim sFilename As String
sFilename = "Bericht_" & Format(Now, "YYYY-MM-DD") 'Dynamischer Dateiname
If SaveAsUI = True Then
Application.EnableEvents = False
Application.Dialogs(xlDialogSaveAs).Show sFilename & ".xlsx", 51 '51 für .xlsx
Cancel = True
Application.EnableEvents = True
End If
End Sub
In diesem Beispiel wird der Dateiname auf das aktuelle Datum gesetzt, was nützlich für Berichte ist.
Tipps für Profis
- Nutze die verschiedenen numerischen Parameter im
Show
-Befehl, um den gewünschten Dateityp im Speichern-unter-Dialog festzulegen.
- Achte darauf, dass der vorgegebene Dateiname keine ungültigen Zeichen enthält, die von Windows nicht akzeptiert werden.
- Verwende Kommentare im Code, um Dich selbst oder andere Entwickler über die Funktionsweise zu informieren.
FAQ: Häufige Fragen
1. Wie kann ich den Dateityp im Speichern unter Dialog vorgeben?
Du kannst den Dateityp mit der Zahl am Ende des Show
-Befehls festlegen. Zum Beispiel, 51
für xlsx und 52
für xlsm.
2. Was bewirkt Cancel = True
im Code?
Das bewirkt, dass der ursprüngliche Speichervorgang abgebrochen wird, sodass der Benutzer nur den Speichern unter Dialog sieht, den Du vorgegeben hast.