Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Dateiname vorbelegen bei Speichern unter aus Menü

Dateiname vorbelegen bei Speichern unter aus Menü
09.05.2019 10:21:52
Excel
Schönen guten Tag,
ich bin neu hier und werde mir gesteigerte Mühe geben mein Anliegen ordentlich vorzutragen - aber seid im Zweifel bitte nachsichtig.
Ich möchte, dass wenn der Anwender aus dem Menü "Speichern unter" wählt, hierbei der Dateiname vorgegeben wird. Ob dieser dann geändert werden kann oder nicht spielt keine Rolle. Ich habe es schon mit diversen Angriffen auf das Workbook_BeforeSave Event versucht, bin dabei jedoch gescheitert.
Das beschert mir das Fenster doppelt. Einmal mit dem neuen und einmal mit dem aktuellen Dateinamen:
If SaveAsUI = True Then
Application.Dialogs(xlDialogSaveAs).Show (sFilename & ".xlsm")
End If
Ich möchte das Fenster lediglich einmal haben und dann bitte dem String sFilename als Vorbelegung.
Vielen Dank für Eure Ideen und Anregungen
Anzeige

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Dateiname vorbelegen bei Speichern unter aus Menü
09.05.2019 10:26:51
Hajo_Zi
ich habbe die Zeile
Application.Dialogs(xlDialogSaveAs).Show (sFilename & ".xlsm")
in meine Datei kopiert, der Dialog kommt nur einmal.

Beiträge von Werner, Luc, robert, J.O.Maximo und folgende lese ich nicht.
Die Beiträge werden auch ignoriert, es erfolgt keine Antwort.
Anzeige
Name vorgeben bei Speichern unter aus Menü
09.05.2019 10:52:41
Excel
Danke für die Antwort. Also wenn Du diese Zeile in das WorkbookBeforeSave kopierst und dann im Menü über "Speichern unter" gehst, müsste es eigentlich doppelt kommen. Bei mir tut es das zumindest.
AW: Name vorbelegen bei Speichern unter
09.05.2019 10:50:53
Excel
Danke für die Antwort. Also wenn Du diese Zeile in das WorkbookBeforeSave kopierst und dann im Menü über "Speichern unter" gehst, müsste es eigentlich doppelt kommen. Bei mir tut es das zumindest.
Anzeige
AW: Name vorbelegen bei Speichern unter
09.05.2019 11:04:40
Excel
Ich habe das gerade mal in einem ganz neuen und nackten Dokument ausprobiert und selbst dort kommt es doppelt:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
If SaveAsUI = True Then
Application.Dialogs(xlDialogSaveAs).Show (sFilename & ".xlsm")
End If
End Sub
Wie gesagt, wenn man über "Speichern unter" im Menü geht.
Anzeige
AW: Name vorbelegen bei Speichern unter
09.05.2019 11:26:14
fcs
Hallöchen,
damit es funktioniert muss der erste Aufruf des Ereignismakros gecancelt werden und vorübergehend die Ereignismakros deaktiviert werden.
LG
Franz
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim sFilename As String
sFilename = "Test " & Format(Now, "YYYY-MM-DD hhmmss") 'Testzeile
If SaveAsUI = True Then
Application.EnableEvents = False
Application.Dialogs(xlDialogSaveAs).Show sFilename & ".xlsm", 52
Cancel = True
Application.EnableEvents = True
End If
End Sub

Anzeige
AW: Name vorbelegen bei Speichern unter
09.05.2019 11:32:27
Excel
Das klappt, ganz genau das habe ich gesucht. Vielen herzlichen Dank.
Dazu habe ich noch 2 kleine Fragen:
- was genau bewirkt die 52 am Ende der Zeile die den Dialog aufruft?
- was genau bewirkt Cancel = True? Oder besser auf was wirkt das?
Vielen Dank und viele Grüße
Bernd
AW: Name vorbelegen bei Speichern unter
09.05.2019 11:38:15
Excel
Jetzt gibt es ein anderes Problem. Jetzt funktioniert mein anderes Speichern unter nicht mehr richtig. Dies soll dann greifen, wenn der Dialog kein Speichern unter ist und der aktuelle und der erwartete Dateiname unterschiedlich sind. Ich habe dort nun diese beiden Schleifen in Folge:
If sFilename Left(ThisWorkbook.Name, InStr(ThisWorkbook.Name, ".") - 1) And SaveAsUI = False Then
If MsgBox(sDialogSpeichern, vbYesNo) = vbYes Then
Cancel = True
Application.Dialogs(xlDialogSaveAs).Show sFilename & ".xlsm"
End If
End If
If SaveAsUI = True Then
Application.EnableEvents = False Application.Dialogs(xlDialogSaveAs).Show sFilename & ".xlsm", 52
Cancel = True
Application.EnableEvents = True
End If
Anzeige
AW: Name vorbelegen bei Speichern unter
11.05.2019 06:57:12
fcs
Hallöchen,
auch hier müssen die Ereignismakros kurzzeitig deaktiviert werden,damit es nicht zu einem erneuten Aufruf kommtund es ist besser die If-Prüfungen korrekt zu schachteln.
Hinweis mit dem zusätzlichen nummerischen Parameter für die Anzeige des "Speichern-Unter-Dialogs" kann man vorgeben welches Dateiformat im Dialog angezeigt werden soll.
52 = xlsm
51 = xlsx
Beim vorgegeben Dateinamen kann man dann die Erweiterung des Dateinamens weglassen.
Gruß
Franz
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim sFilename As String, sDialogSpeichern As String
sDialogSpeichern = "Datei """ & Me.Name & """ unter neuem Namen speichern?" 'Testzeile
sFilename = "Test " & Format(Me.Worksheets(1).Range("A1").Value, "YYYY-MM") 'Testzeile
If SaveAsUI = True Then
Application.EnableEvents = False
Application.Dialogs(xlDialogSaveAs).Show sFilename & ".xlsm", 52
Cancel = True
Application.EnableEvents = True
Else
If sFilename  Left(ThisWorkbook.Name, InStr(ThisWorkbook.Name, ".") - 1) Then
If MsgBox(sDialogSpeichern, vbYesNo) = vbYes Then
Application.EnableEvents = False
Cancel = True
Application.Dialogs(xlDialogSaveAs).Show sFilename & ".xlsm"
Application.EnableEvents = True
End If
End If
End If
End Sub

Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

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.

  1. Öffne die Excel-Datei, in der Du den Code verwenden möchtest.
  2. Drücke ALT + F11, um den Visual Basic for Applications (VBA) Editor zu öffnen.
  3. Im Projektfenster, suche Dein Workbook (z.B. "VBAProject (DeinDateiname.xlsx)") und klicke darauf.
  4. Doppelklicke auf "ThisWorkbook".
  5. 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
  1. 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.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige