Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Excel-Vorlage für Internatsdoku beim ersten Speichern Dateiname vorgeben
#11
Hallo Uwe,

das sollte vor allem auch der TE nochmal tun. Dann versteht er vielleicht meine Hinweise mit ThisWorkbook.Save Wink

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)
Antworten Top
#12
Hallo,

um etwaigen Missverständnissen vorzubeugen, habe ich mal einen Ablaufplan erstellt, was mein Code macht:

ABCDEFG
1SchließenMappe ist gespeichert?
2JaMappe wird geschlossen
3Excel wird geschlossen
4NeinMsgBox "Soll gespeichert werden?"
5JaMappe wurde schon mal gespeichert (hat eine Dateiendung)?
6JaMappe wird gespeichert
7Mappe wird geschlossen
8Excel wird geschlossen
9NeinDialog Speichern unter
10SpeichernMappe wird gespeichert
11Mappe wird geschlossen
12Excel wird geschlossen
13AbbrechenRückfrage "Trotzdem beenden?"
14JaMappe wird ungespeichert geschlossen
15Excel wird geschlossen
16NeinRücksprung zu E9
17NeinMappe wird ungespeichert geschlossen
18Excel wird geschlossen
19
20SpeichernMappe wurde schon mal gespeichert (hat eine Dateiendung)?
21JaMappe wird gespeichert
22NeinDialog Speichern unter
23SpeichernMappe wird gespeichert
24Abbrechenkeine Aktion

Hier der Code:


' **************************************************************
'  Modul:  DieseArbeitsmappe  Typ = Element der Mappe(Sheet, Workbook, ...)
' **************************************************************


Option Explicit

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
  If Me.Path = "" Then
      On Error Resume Next
      Application.EnableEvents = False
      Cancel = True
      Application.Dialogs(xlDialogSaveAs).Show _
         "Tagesdokumentation " & Me.Worksheets("keine Ahnung").Range("B1").Value & " " & _
                                 Me.Worksheets("keine Ahnung").Range("A1").Value, 52
      Application.EnableEvents = True
      On Error GoTo 0
  End If
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
  Dim bolWeiter As Boolean
  If Me.Saved = False Then
     Select Case MsgBox("Änderungen in " & Me.Name & " speichern?", vbYesNoCancel + vbQuestion, Me.Name)
         Case vbYes
             On Error Resume Next
             Application.EnableEvents = False
             If Len(Me.Path) Then
                 Me.Save
             Else
                 Do
                     bolWeiter = Application.Dialogs(xlDialogSaveAs).Show( _
                         "Tagesdokumentation " & Me.Worksheets("keine Ahnung").Range("B1").Value & " " & _
                                                 Me.Worksheets("keine Ahnung").Range("A1").Value, 52)
                     If Not bolWeiter Then
                         bolWeiter = MsgBox("Die Speicherung wurde abgebrochen. Trotzdem beenden?", vbYesNo + vbQuestion) = vbYes
                     End If
                 Loop Until bolWeiter
                 Me.Saved = True
             End If
             Application.EnableEvents = True
             On Error GoTo 0
             Application.Quit
         Case vbNo
             Me.Saved = True
             Application.Quit
         Case Else
             Cancel = True
     End Select
  Else
     Application.Quit
  End If
End Sub

Code eingefügt mit: Excel Code Jeanie

Gruß Uwe


Angehängte Dateien
.xltm   Internatsdoku.xltm (Größe: 20,19 KB / Downloads: 2)
Antworten Top
#13
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
Antworten Top
#14
Hallo Uwe,

(25.02.2018, 02: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:
  • Kuwer
Antworten Top
#15
Ja klar, gnadenlos reinkopiert. Ich füge eine abgespeckte Version der Orginaldatei mal bei. Habe nur Blätter gelöscht.


Angehängte Dateien
.xltm   Tagesdokumentation neuerVersuch2CLE.xltm (Größe: 58,72 KB / Downloads: 2)
Antworten Top
#16
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

Code:
ThisWorkbook.Names("T_1").Comment = "Eingabe"    ' zurücksetzen

der Auslöser.
Gruß Stefan
Win 10 / Office 2016
Antworten Top
#17
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.
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste