Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1696to1700
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

BeforeSave / Cancel=True / manuell speichern

BeforeSave / Cancel=True / manuell speichern
20.06.2019 15:33:50
Stefan
Hallo zusammen,
ich könnte bei folgendem Problem Eure Hilfe gebrauchen.
Das speichern einer Datei fange ich im BeforSave-Ereignis mit cancel=true ab.
Nun soll der "Speichern Dialog" mit einem vorgeschlagenen Pfad angezeigt werden. Das _ funktioniert soweit auch. Ich verwende folgenden Code (hier nur das wesentlichste):

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Cancel = True
With Application.FileDialog(msoFileDialogSaveAs)
Application.EnableEvents = False
ActiveWorkbook.SaveAs Filename:=.SelectedItems(1), FileFormat:=ActiveWorkbook.FileFormat
Application.EnableEvents = True

Das cancel=true mache ich, damit das BeforeSave-Event nicht erneut aufgerufen wird. Allerdings wird die Datei jetzt nicht unter dem angegebenen Pfad gespeichert. Und ich habe keine Ahnung warum nicht... Hat da jemand einen Tipp für mich ?
Viele Grüße
Stefan

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: BeforeSave / Cancel=True / manuell speichern
20.06.2019 16:01:33
Hajo_Zi
Hallo Stefan,
mit cancel=True brichst Du das speichern ab.

Beiträge von Werner, Luc, robert, J.O.Maximo und folgende lese ich nicht.
Die Beiträge werden auch ignoriert, es erfolgt keine Antwort.
AW: BeforeSave / Cancel=True / manuell speichern
20.06.2019 16:50:36
onur
"Das cancel=true mache ich, damit das BeforeSave-Event nicht erneut aufgerufen wird" - Das wird schon durch
Application.EnableEvents = False

verhindert.
Cancel = True

gehört besser ans ENDE der Sub.
Bei
With Application.FileDialog(msoFileDialogSaveAs)

fehlt das .Show.
ActiveWorkbook.SaveAs Filename:=.SelectedItems(1), FileFormat:=ActiveWorkbook.FileFormat

und
Application.FileDialog(msoFileDialogSaveAs)

ist doppelt gemoppelt.
So ist richtig:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Application.EnableEvents = False
Application.FileDialog(msoFileDialogSaveAs).Show
Application.EnableEvents = True
Cancel = True
End Sub

Anzeige
AW: BeforeSave / Cancel=True / manuell speichern
21.06.2019 07:55:45
Stefan
Guten Morgen onur und vielen Dank für Deine Rückmeldung,
das .Show habe ich drin, jedoch nicht den ganzen Code gepostet, sorry.
Kann ich, nachdem ich den Speichervorgang (z.B. Diskettensymbol) mit Cancel abgebrochen habe, mit
Application.FileDialog(msoFileDialogSaveAs).Show
einen neuen Speichervorgang einleiten ? Bei mir verändert sich nach drücken von "Speichern" im Dialog zwar der Mauszeiger (so als ob gespeichert werden würde), aber die Datei wird definitiv nicht unter dem angegebenen Namen und Pfad gespeichert.
Es soll ja, egal ob "Speichern unter" oder nur "Speichern" gewählt wird, immer der SaveAs-Dialog eingeblendet werden...
Mein Code sieht jetzt so aus:

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim strFileName As String, strInitialName As String
Select Case Environ("Username")
Case "Klaus"
strInitialName = Sheets("Status").[B15] & Sheets("Status").[B17] & " " & Sheets("Formular").[ _
D11] & ", " & Date
Case "Werner"
strInitialName = Sheets("Status").[E14] & Sheets("Status").[B17] & " " & Sheets("Formular").[ _
D11] & ", " & Date
Case Else
strInitialName = Sheets("Status").[B14] & Sheets("Status").[B17] & " " & Sheets("Formular").[ _
D11] & ", " & Date
End Select
strFileName = strInitialName & ".xlsm"
With Application.FileDialog(msoFileDialogSaveAs)
.AllowMultiSelect = False       'nur ein Dateiname
.InitialFileName = strFileName   'Ablagevorschlag
.FilterIndex = 2
If Not .Show = True Then  'Wenn Abbrechen gedrückt = Abbrechen
Cancel = True
Exit Sub
Else
Cancel=true
If .SelectedItems(1)  "" Then
Application.EnableEvents = False
ActiveWorkbook.SaveAs .SelectedItems(1), FileFormat:=xlOpenXMLWorkbookMacroEnabled,
CreateBackup:=False
Application.EnableEvents = True
End If
End If
End with
Exit sub

Anzeige
AW: BeforeSave / Cancel=True / manuell speichern
21.06.2019 18:17:23
onur
Und wieso hast du nicht MEINEN Code genommen ?
Habe ich dir doch gepostet - Mehr brauchst du nicht.
AW: BeforeSave / Cancel=True / manuell speichern
21.06.2019 08:00:20
Stefan
Guten Morgen Hajo und danke auch für Deine Rückmeldung.
Ich habe onur gerade auch schon geantwortet...
Das mit Cancel=True habe ich verstanden. Kann ich nach dem Cancel=True mit dem SaveAs-Dialog oder ActiveWorkbook.SaveAs... (mit vorherigem Application.EnableEvents = False) dennoch speichern, oder habe ich mit dem Cancel=True auch alle folgenden Speicherversuche abgebrochen ?
Gruß
Stefan
AW: BeforeSave / Cancel=True / manuell speichern
21.06.2019 09:03:33
Hajo_Zi
ja, da es in save grundsätzlich abgeschaltet ist, ist keine speicherung möglich.
Gruß Hajo
Anzeige
AW: BeforeSave / Cancel=True / manuell speichern
21.06.2019 12:05:42
Stefan
OK, dann gibt es wohl keine Lösung für mein Problem...
Danke und Gruß
Stefan

18 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige