Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1676to1680
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

Speichern verhindern, wenn Abbrechen geklickt wird

Speichern verhindern, wenn Abbrechen geklickt wird
22.02.2019 12:24:50
Roman
Hallo zusammen,
habe folgenden Code, der soweit funktioniert, bis auf das wenn man auf Abbrechen oder Schließen klickt, die Datei trotzdem gespeichert wird. Außerdem wird bei den gespeicherten Dateien immer die Abfrage "Makros deaktiviert - Inhalt aktivieren" angezeigt, ist das normal?
Kann mir jemand helfen?
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 GoTo ErrorHandler
''' This disables all Excel events.
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")
'ThisWorkbook.SaveAs Filename:=Filevar, FileFormat:=xlOpenXMLWorkbookMacroEnabled
'If (fileSaveName  False) Then Exit Sub
If fileSaveName  "False" Then
Application.EnableEvents = False
ThisWorkbook.SaveAs Filename:=Filevar, FileFormat:=52
Application.EnableEvents = True
Else
'//Do something - user cancelled
End If
ErrorExit:
''' This makes sure events get turned back on again no matter what.
Application.EnableEvents = True
Exit Sub
ErrorHandler:
'MsgBox "No value submitted - File Not Saved"
Resume Next
End Sub

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Speichern verhindern, wenn Abbrechen geklickt wird
22.02.2019 17:51:45
onur
Ich verstehe nicht, warum VOR dem Speichern noch ein Makro ZUM Speichern ausgeführt werden soll.
Du speicherst doch bereits.
AW: Speichern verhindern, wenn Abbrechen geklickt wird
23.02.2019 00:08:45
Roman
Damit der Name der Datei generiert wird.
AW: Speichern verhindern, wenn Abbrechen geklickt wird
23.02.2019 00:27:22
onur
False gehört nicht in Gänsefüsschen, Application.GetSaveAsFilename gibt einen Booleanwert aus, und nicht einen Text "False".
AW: Speichern verhindern, wenn Abbrechen geklickt wird
23.02.2019 10:02:11
Roman
Das ändert nichts an dem eigentlichen Problem, aber danke für den Tipp.
AW: Speichern verhindern, wenn Abbrechen geklickt wird
23.02.2019 10:16:43
onur
GENAU DAS IST DAS PROBLEM, aber irgendwann erkennst es evtl auch du.
Wenn du etwas VBA beherrschen würdest, würdest du debuggen können und sehen, das es nach der Änderung korrekt läuft.
Abgesehen davon sollte man ErrorHandling nur benutzen, wenn es unumgänglich ist UND man genau weiss, wie es geht.
Anzeige
AW: Speichern verhindern, wenn Abbrechen geklickt wird
23.02.2019 11:25:32
Roman
Wenn ich das... und wenn ich das..., dann würde ich hier wohl nicht fragen (Siehe Level: Excel gut - VBA nein). Aber du hast Recht, es funktioniert wirklich. Ich habe das durch so viel rumprobieren völlig übersehen, deswegen muss man nicht gleich ausfallend werden.
Jetzt habe ich nur noch ein Problem mit dem Code: Sobald man auf Speichern geht, dann auf Abbrechen und anschließend wieder auf Speichern, kommt der Speichern als Dialog nicht mehr, sondern die Datei wird nun einfach überschrieben, jedesmal wenn man auf Speichern klickt. Ist es möglich, die Abfrage jedesmal neu zu starten, sobald man auf Speichern klickt?
Und kannst du mir sagen, wie ich den ErrorHandler richtig benutze und ob ich ihn in diesem Code überhaupt benötige? Ich habe ihn mal rausgenommen, dann kommt eine Fehlermeldung beim Debuggen.
Anbei mein aktueller Code, soweit ich richtig erkannt habe, war ErrorExit bei mir sinnlos eingebaut.
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 GoTo ErrorHandler
''' This disables all Excel events.
Application.EnableEvents = False
Cancel = True
FilePath = ThisWorkbook.Path & "\"
varInput = Range("R3").Value & "_" & Range("D3").Value & "_" & "Deckblatt"
Filevar = FilePath & varInput & ".xlsm"
fileSaveName = Application.GetSaveAsFilename(Filevar, fileFilter:="Excel Dateien (*.xlsm), _
*.xlsm")
If fileSaveName  False Then
Application.EnableEvents = False
ThisWorkbook.SaveAs Filename:=Filevar, FileFormat:=52
Application.EnableEvents = True
Else
'//Do something - user cancelled
End If
ErrorHandler:
'MsgBox "Datei nicht gespeichert!"
Resume Next
End Sub

Anzeige
AW: Speichern verhindern, wenn Abbrechen geklickt wird
23.02.2019 11:32:30
Roman
Ok, jetzt habe ich es. Habe Application.EnableEvents = True beim ErrorHandler eingefügt.
Jetzt zu meiner letzten Frage, kann ich das Ganze auch ohne den ErrorHandler benutzen?
AW: Speichern verhindern, wenn Abbrechen geklickt wird
23.02.2019 11:44:17
onur

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim FilePath As String
Dim varInput As String
Dim fileSaveName As String
Dim Filevar
On Error Resume Next
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 ")
Application.EnableEvents = False
If fileSaveName  False Then ThisWorkbook.SaveAs Filename:=Filevar, FileFormat:=52
Application.EnableEvents = True
Exit Sub

Anzeige
AW: Speichern verhindern, wenn Abbrechen geklickt wird
23.02.2019 11:48:25
onur
Noch besser so:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim FilePath As String
Dim varInput As String
Dim fileSaveName As String
Dim Filevar
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 ")
Application.EnableEvents = False
On Error Resume Next
If fileSaveName  False Then ThisWorkbook.SaveAs Filename:=Filevar, FileFormat:=52
Application.EnableEvents = True
Exit Sub

Anzeige
AW: Speichern verhindern, wenn Abbrechen geklickt wird
23.02.2019 11:56:34
Roman
Danke für deine Antwort, bin gerade auch auf Resume Next gestoßen. Mein Code würde so aussehen
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
''' This disables all Excel events.
Application.EnableEvents = False
Cancel = True
FilePath = ThisWorkbook.Path & "\"
varInput = Range("R3").Value & "_" & Range("D3").Value & "_" & "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
Kann man den so lassen oder ist an deinem Vorschlag etwas besser/richtiger? Bei mir ist Resume Next weiter oben und End if habe ich drin.
Danke vorab für deine Bemühung.
Anzeige
AW: Speichern verhindern, wenn Abbrechen geklickt wird
23.02.2019 14:07:31
onur
Mein code ist dein code, nur optimiert.

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige