das sollte vor allem auch der TE nochmal tun. Dann versteht er vielleicht meine Hinweise mit ThisWorkbook.Save
Ansonsten rudere ich hier mal zurück If Me.Path = "" Then wäre nur eine etwas unsinnige Bedingung im BeforeClose Es geht ja auch darum, dass er die Datei aus einer Vorlage erzeugen will.
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)
um etwaigen Missverständnissen vorzubeugen, habe ich mal einen Ablaufplan erstellt, was mein Code macht:
A
B
C
D
E
F
G
1
Schließen
Mappe ist gespeichert?
2
Ja
Mappe wird geschlossen
3
Excel wird geschlossen
4
Nein
MsgBox "Soll gespeichert werden?"
5
Ja
Mappe wurde schon mal gespeichert (hat eine Dateiendung)?
6
Ja
Mappe wird gespeichert
7
Mappe wird geschlossen
8
Excel wird geschlossen
9
Nein
Dialog Speichern unter
10
Speichern
Mappe wird gespeichert
11
Mappe wird geschlossen
12
Excel wird geschlossen
13
Abbrechen
Rückfrage "Trotzdem beenden?"
14
Ja
Mappe wird ungespeichert geschlossen
15
Excel wird geschlossen
16
Nein
Rücksprung zu E9
17
Nein
Mappe wird ungespeichert geschlossen
18
Excel wird geschlossen
19
20
Speichern
Mappe wurde schon mal gespeichert (hat eine Dateiendung)?
21
Ja
Mappe wird gespeichert
22
Nein
Dialog Speichern unter
23
Speichern
Mappe wird gespeichert
24
Abbrechen
keine Aktion
Hier der Code:
' ************************************************************** ' Modul: DieseArbeitsmappe Typ = Element der Mappe(Sheet, Workbook, ...) ' **************************************************************
So. Jetzt hab ich endlich Kapazitäten frei, um mich dem letzten Problem zu widmen. Leider brauche ich eure Hilfe. Es gab zwischendurch, glaube ich, ein paar Missverständnisse in diesem Thread, aber egal, jetzt kommt ein Neuanfang.
Es geht nur um den BeforeClose-Code, den BeforeSave habe ich schon lange. Auch ersteren hatte ich weitgehend, bin aber nicht weitergekommen.
Seit ein paar Wochen haben wir auf der Arbeit Office 2016.
Danke für deinen Ablaufplan Uwe. Ich hatte auch einen erstellt, der ist aber viel unübersichtlicher. Das Problem an deinem BeforeSave-Code ist, dass ich in dem (völlig bescheuerten) Speichern-unter-Zwischenfenster kein Verzeichnis anklicken kann. Tot! Aber ich hab einen, mit dem alles klappt. Übrigens: Man hätte doch "One Drive" auch im herkömmlichen Speichern-unter-Dialogfenster an exponierter Stelle auftauchen lassen können, oder?! Da kommen längst überwunden geglaubte Hassgefühle gegenüber MS wieder an die Oferfläche!
Es geht also nur noch um den BeforeClose!
Ich habe deine letzte Version getestet: Will man schließen, ohne zuvor etwas verändert zu haben, taucht die MsgBox (Wolle speichern?) auf. Bestätigt man mit Ja, kommt die nächste Box und fragt, ob man beenden will ohne vorher gespeichert zu haben. Will man schließen, nachdem man etwas verändert hat, popt das Speichern-unter-Fenster auf, aber leider mit den exceltypischen Angaben bzgl. Dateiname und -typ. Geht man dann auf Abbrechen, erscheint zusätzlich noch die Excelmeldung und fragt nochmal was man tun will. Manchmal taucht aber auch, wenn man bestätigt, dass man speichern will, ein zweites Fenster auf ("Speicherung abgebrochen" - Trotzdem beenden?). Klickt man dann auf Nein, passiert gar nichts, die Meldung bleibt einfach offen.
Kann man es denn nicht hinkriegen, dass man Excel im BeforeClose die Anweisung gibt, dass, wenn das Speichern-unter-Fenster auftaucht, der definierte Dateiname samt Erweiterung verwendet werden soll? Ansonsten sollen die Standard-Prozeduren ablaufen.
Mit mittlerweile mäßiger Hoffnung verbleibe ich hochachtungsvoll Uwe
(25.02.2018, 03:34)CaptainNemo schrieb: Es geht also nur noch um den BeforeClose!
Ich habe deine letzte Version getestet: Will man schließen, ohne zuvor etwas verändert zu haben, taucht die MsgBox (Wolle speichern?) auf.
hast Du den Code von Uwe auch genauso übernommen wie er ihn gepostet hat? Dann kann es nicht sein, dass die MsgBox auftaucht. Ich habe es bei mir getestet: Die Datei wird ohne Meldung geschlossen und Excel beendet.
Gruß Stefan Win 10 / Office 2016
Folgende(r) 1 Nutzer sagt Danke an Steffl für diesen Beitrag:1 Nutzer sagt Danke an Steffl für diesen Beitrag 28 • Kuwer
25.02.2018, 18:49 (Dieser Beitrag wurde zuletzt bearbeitet: 25.02.2018, 18:49 von Steffl.
Bearbeitungsgrund: Codezeile eingefügt
)
Hallo Uwe,
tja, die Ereignisse und ihre Folgen :s Du hast in der Datei ein Workbook_Open-Ereignis (das vom anderen Thread)
Code:
Private Sub Workbook_Open()
Dim Blaetter As Variant
For Each Blaetter In ThisWorkbook.Sheets ' Buttons Blaetter.CommandButton1.Caption = "Eingabe" ' auf Ausgangszustand ThisWorkbook.Names("T_1").Comment = "Eingabe" ' zurücksetzen Next
Application.EnableAutoComplete = False
End Sub
und das ist für Excel eine Änderung in der Datei und somit kommt die Abfrage.
Nachtrag: Bei meinen Testversuchen ist die Codezeile
Hi, mit Andrés neuer Workbook_Open-Version klappt's evt. (*s. unten) auch mit dem Comment... Hab's auch mal ohne probiert - aber der Ursprung dieser Zeile ist ja, dass ALLE Buttons auf "Eingabe" sind nach Öffnen der Mappe. Ohne sie ist dies nur in "Tabelle1" der Fall. Und dies auch nur vorübergehend. Beim Hin- und Herwechseln nimmt der Button den Zustand der anderen CommandButton1-Buttons an.
* Wenn ich mich nicht täusche, verliefen meine ersten Tests teilweise auch wieder negativ (bin mir relativ sicher es waren diesselben Codes wie die aktuellen), bin mir aber nicht zu 100% sicher, weil der BeforeClose jetzt läuft. Entweder tauchte eine Meldung (nicht das Debug-Fenster) auf, aus der man nicht mehr rauskam (kann mich an deren Inhalt leider nicht exakt erinnern), oder Application.Dialogs(xlDialogSaveAs).Show("Dateiname") funktionierte nicht, oder aber alles funktionierte.
Im Moment funktioniert Uwes Code (BeforeClose), ein Nachteil ist allerdings, dass, wenn man im Speichern-unter-Fenster auf Abbrechen geht, man aus der MsgBox("Die Speicherung wurde abgebrochen. Trotzdem beenden?") nicht rauskommt. Man kann nur beenden, nicht aber abbrechen. Hab einiges ausprobiert; mit Glück und Geschick hab' ich ähnliche Geschichten schon hinbekommen, aber es will halt nicht klappen.