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

Workbook_BeforeClose Problem

Workbook_BeforeClose Problem
01.10.2016 09:54:00
Wolfgang
Hallo,
habe nachstehenden Code geschrieben, um vor dem Speichern mit einer zusätzlichen Sicherheitsabfrage den User zu fragen, ob er neben der normalen Speicherung eine Sicherungskopie durchführen möchte. Soweit so gut - [ja] = Save + SaveAs (Sicherungskopie) machen und schließen (selber Code wie bei [nein], nur dass ich vorher noch ein wb.save und wab.saveas mache) funktioniert. Bei nachstehendem Codeteil mit [nein] - also ohne Speichern beenden - habe ich aber folgendes Problem: wenn noch irgendeine eine andere Arbeitsmappe geöffnet ist, während ich diese schließe mit Speichern = [nein], wird die Arbeitsmappe auch korrekt geschlossen, danach stürzt Excel aber ab (Sanduhr und aus....). Verstehe das Problem nicht - kann mir bitte jemand helfen - Code siehe unten....?
Danke
Wolfgang
Private Sub Workbook_BeforeClose(Cancel As Boolean)
If Sheets("Konfig").Range("B4").Value "ja" Then Exit Sub
If Sheets("Konfig").Range("B3").Value = "ja" Then
Sheets("Konfig").Range("B3").Value = ""
Exit Sub
End If
res = MsgBox("Änderungen speichern und beenden = [JA]" & Chr(13) & Chr(13) & "Änderungen NICHT speichern und beenden = [NEIN]" & Chr(13) & Chr(13) & "Nicht beenden / weiterarbeiten = [ABBRECHEN]", vbYesNoCancel + vbQuestion, "Vorm Beenden speichern ?")
If res = vbNo Then
Application.DisplayAlerts = False
Sheets("Konfig").Range("B3").Value = "ja"
DoEvents
Call ActiveWorkbook.Close(False)
Application.DisplayAlerts = True
Exit Sub
End If
If res = vbYes Then....

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Workbook_BeforeClose Problem
01.10.2016 11:27:57
Rolf.dW
Moin Wolfgang,
hast du schon mal versucht, anstelle von
Call ActiveWorkbook.Close(False)
die Anweisung
ActiveWorkbook.Close SaveChanges:=False
zu verwenden?
Gruß, Rolf
AW: Workbook_BeforeClose Problem
01.10.2016 11:36:12
Wolfgang
Hallo Rolf,
soeben versucht - ändert nichts....
VG
Wolfgang
AW: Workbook_BeforeClose Problem
01.10.2016 11:57:35
fcs
Hallo Wolfgang,
ich weiss nicht was du mit dem prüfen/setzen der Werte im Blatt "Konfig" Zelle "B3" und Zelle "B4" erreichen willst.
Es jedenfalls keinen Sinn im "NEIN"-Weg Zell-Werte zu ändern, wenn die Datei nicht gespeichert wird.
Ich würde es wie folgt lösen.
Den Verzeichnis für die Sicherheitskopie musst du ggf. anpassen.
Wenn du den Namen der Sicherheitskopie über den Zeitstempel fest vorgibst, dann kannst du auch ohne Dateidialog die Sicherheitskopie speichern.
Gruß
Franz
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim pathSK As String
res = MsgBox("Änderungen speichern und beenden = [JA]" & Chr(13) & Chr(13) _
& "Änderungen NICHT speichern und beenden = [NEIN]" & Chr(13) & Chr(13) _
& "Nicht beenden / weiterarbeiten = [ABBRECHEN]", _
vbYesNoCancel + vbQuestion, "Vorm Beenden speichern ?")
If res = vbNo Then
'Ohne Speichern beenden
Me.Saved = True
ElseIf res = vbYes Then
If Me.Saved = False Then Me.Save
'sicherheitskopie erstellen?
If MsgBox("Sicherheitskopie erstellen?", _
vbYesNo, _
"S I C H E R H E I T S K O P I E") = vbYes Then
pathSK = Me.Path & Application.PathSeparator & "SK"
If Dir(pathSK, vbDirectory) = "" Then
VBA.MkDir pathSK
End If
pathSK = pathSK & Application.PathSeparator
With Application.FileDialog(msoFileDialogSaveAs)
.Title = "Bitte Name der Sicherheitskopie eingeben/auswählen"
.FilterIndex = 2 'Excel: Dateien mit Makros
.InitialFileName = pathSK _
& "SK " & Format(Now, "YYYY-MM-DD hhmm") & Me.Name
If .Show = -1 Then
Me.SaveCopyAs .SelectedItems(1)
Else
End If
End With
End If
ElseIf res = vbCancel Then
Cancel = True
End If
End Sub

Anzeige
AW: Workbook_BeforeClose Problem
01.10.2016 13:14:24
Wolfgang
Hallo Franz,
super, vielen Dank - das me.saved = true war der entscheidende Tipp - kannte ich nicht.
Ich wusste einfach nicht, wie ich verhindere, dass die Procedure erneut durchlaufen wird oder ich verhindern soll, dass Excel nach meinem Dualog nochmal nach dem Speichern fragt. Daher auch die Konstrukte mit B3 und Workbook.Close - das hab ich jetzt alles rausgeschmissen und einfach in meinem Code durch me.saved=true ersetzt, wie ich es bei dir gesehen habe, und schon passts perfekt.
Vielen Dank!
Wolfgang

85 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige