save wird nicht ausgeführt

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
Bild

Betrifft: save wird nicht ausgeführt
von: Andreas
Geschrieben am: 05.04.2005 08:26:08
Hallo an alle,
ich habe bereits in der vergangenen Woche dieses Problem ins Forum eingestellt, leider aber ohne passende Lösung - deshalb erneut mein Versuch.
ich habe in meine Anwendung einen 'Schließen-Button' integriert. Hierüber wird die Funktion Workbook_Close() aufgerufen. Soweit funktioniert auch alles. Wenn ich nun mein Makro ausführe, kommt die Meldung "Möchten sie die geänderte Datei speichern" - nach bestätigung mit "Ja" wird auch die entsprechende case-Anweisung Sub Ja() ausgeführt. Problem jedoch: die Save-Anweisung wird einfach übergangen mit der Folge, dass die Anwendung nicht gespeichert wird.
Noch eine Anmerkung: wenn ich über das Menü - Datei - schließen gehe, funktioniert alles einwandfrei !?!
Ich bin für alle Lösungsvorschläge offen und dankbar.
Danke im voraus,
Grüße Andreas

-------------------------------------------------------------


Private Sub Workbook_Close()
    Workbooks(Wrkbk).Close
End Sub


-------------------------------------------------------------

Private Sub workbook_Beforeclose(Cancel As Boolean)
Dim Antwort%
Dim Frage As String
n = ActiveWorkbook.Name
    Msg = "Möchten Sie die geänderte Datei speichern?"
    Select Case MsgBox(Msg, vbInformation + vbYesNoCancel)
        Case vbYes: Call Ja             'Makroaufruf bei Ja
        Case vbNo: Call Nein            'Makroaufruf bei Nein
        Case vbCancel: Cancel = True    'Abbrechen
    End Select
End Sub


-------------------------------------------------------------

Private Sub Ja()
    Workbooks(Wrkbk).Activate
    Workbooks(Wrkbk).Save
End Sub

Bild

Betrifft: AW: save wird nicht ausgeführt
von: Tobias Marx
Geschrieben am: 05.04.2005 09:04:57
Servus!
Wenn du in deiner Ja-Routine sowieso das Workbook aktivierst, versuchs doch mal mit ActiveWorkbook.Save
Gehts dann?
Gruss

Tobias
Bild

Betrifft: AW: save wird nicht ausgeführt
von: Andreas
Geschrieben am: 05.04.2005 10:51:33
Hallo an alle,
damit mein Problem vielleicht etwas deutlicher wird, habe ich auf dem Server eine Beispieldatei zur Verfügung gestellt. Alle anderen Tipps haben leider nicht gefruchtet.
https://www.herber.de/bbs/user/20704.xls
Vielen dank im voraus,
Andreas
Bild

Betrifft: AW: save wird nicht ausgeführt
von: Andi
Geschrieben am: 05.04.2005 11:11:48
Hi,
die anderen Tips waren nicht wirklich Tips, sondern eher Rückfragen, zB Heiko: "Wo und wann wird Wrkbk mit dem Workbook Namen versehen ?"
Du hattest doch sicherlich vor, mit der Variable n, der Du ja den Workbook Namen zuweist, irgendwas anzustellen oder? Bis jetzt tust Du das aber nicht. Probier doch mal, die Variable der

Sub Ja zu übergeben:
call Ja(n)
die 

Sub würde dann so anfangen:

Sub Ja(WrkBk as String)
[...]
End Sub

Is jetzt eher ein Schuss ins Blaue, aber vielleicht hilft's ja...
Schönen Gruß,
Andi
Bild

Betrifft: AW: save wird nicht ausgeführt
von: Andreas
Geschrieben am: 05.04.2005 12:45:02
Hallo Andi,
Die Variable (n) hatte ich eingeführt, um Fehler bei mehreren gleichzeitig geöffneten Arbeitsmappen zu vermeiden.
Ich hatte nämlich ein Problem damit, dass beim beenden von Excel aus einer anderen, geöffneten Arbeitsmappe meine before_close-Anweisung fehlerhaft durchlaufen wurde. Mit dieser Variablen kam es dann zumindest an dieser Stelle nicht mehr zum Fehler.
Ich möchte einfach gewährleisten ,dass die Anwendung sowohl über den Button 'schließen' als auch über das (x) in der Menüleiste geschlossen werden kann, auch wenn gleichzeitig mehrere Mappen geöffnet sind.
Ich hoffe, damit ist es jetzt etwas klarer geworden.
Viele Grüße,
Andreas
Bild

Betrifft: AW: save wird nicht ausgeführt
von: Heiko S.
Geschrieben am: 05.04.2005 11:58:46
Hallo Andreas,
ich kann Andi nur zustimmen und vermute du hast dich verzettelt.
Darum noch eine Frage.
Die Datei mit dem Namen Text.xls ist das die Datei in der du den ganzen Code hast, oder ist eine Datei die neben der mit dem Code auch geöffnet ist und in der du sozusagen arbeitest?

Gruß Heiko

PS: Rückmeldung wäre nett !
Bild

Betrifft: AW: save wird nicht ausgeführt
von: Andreas
Geschrieben am: 05.04.2005 12:37:02
Hallo Heiko,
das ist gut möglich, dass ich ein wenig in die Irre gelaufen bin.
Die datei test.xls enthält den gasamten Code. Allerdings habe ich einige Tabellenblätter und Userforms gelöscht sowie verknüpfungen zu anderen dateien entfernt, um die vorgeschriebenen 300kb nicht zu überschreiten. Es sind also keine weiteren Dateien in Gebrauch.
Viele Grüße,
Andreas
Bild

Betrifft: AW: save wird nicht ausgeführt
von: Heiko S.
Geschrieben am: 05.04.2005 12:44:07
Hallo Andreas,
Grund meiner Frage ist dieser Codeauszug.
Denn wenn Wrkbk nicht das Workbook ist in dem sich dieser Code befindet dann wird diese
Workbook_BeforeClose Aktion natürlich nicht ausgeführt wenn du Wrkbk schließt. Die bezieht sich nämlich auf die Arbeitsmappe mit dem Code. Alles klar ;-)))


Private Sub Workbook_Close()
    Workbooks(Wrkbk).Close
End Sub


Private Sub workbook_Beforeclose(Cancel As Boolean)
'Speichern-Abfrage beim Schließen
Dim Antwort%
Dim Frage As String
n = ActiveWorkbook.Name
    Msg = "Möchten Sie die geänderte Datei " & Workbooks(Wrkbk).Name & " speichern?"
    Select Case MsgBox(Msg, vbInformation + vbYesNoCancel)
        Case vbYes: Call Ja             'Makroaufruf bei Ja
        Case vbNo: Call Nein            'Makroaufruf bei Nein
        Case vbCancel: Cancel = True    'Abbrechen
    End Select
End Sub

Gruß Heiko

PS: Rückmeldung wäre nett !
Bild

Betrifft: AW: save wird nicht ausgeführt
von: Andreas
Geschrieben am: 05.04.2005 12:50:14
Hallo Heiko,
hinter der Variablen wrkbk verbirgt sich tatsächlich die Anwendung test.xls.
Die before-Close-Anweisung wird im Einzelschrittmodus auch tatsächlich durchlaufen - ebenso wird auch der Aufruf der Case-Anweisung richtig ausgeführt - nur die Anweisung 'save' will er einfach nicht durchführen.
Grüße,
Andreas
Bild

Betrifft: AW: save wird nicht ausgeführt
von: P@ulchen
Geschrieben am: 05.04.2005 12:55:07
Hallo Andreas,
hast Du mal eine Änderung in Deiner Mappe vorgenommen, bevor Du den Code ausprobiert hast? Wenn Du eine Mappe ohne Änderungen schließt, wird die Speicherabfrage ja auch nicht aufgerufen.

Gruß aus Leipzig
P@ulchen
Das Forum lebt auch von den Rückmeldungen !
Bild

Betrifft: AW: save wird nicht ausgeführt
von: Andreas
Geschrieben am: 05.04.2005 13:42:34
Hallo Paulchen,
hab ich alles schon durchprobiert und es funzt trotzdem nicht. Im Einzelschrittmodus sieht man ja tatsächlich die einzelnen durchlaufenen Schritte - klappt alles bis auf die save-Anweisung wird einfach ignoriert als würde die Befehlszeile gar nicht existieren.
Gruß Andreas
Bild

Betrifft: AW: save wird nicht ausgeführt
von: Heiko S.
Geschrieben am: 05.04.2005 14:08:26
Hallo Andreas,
nettes Problem, aber vielleicht habe ich die Lösung.
Habe deinen Code mal auf das wesentliche Problem abgespeckt.
Und soweit ergänzt das er nun speichert.
Wichtig das SaveChanges:=True hinter .close
Wichtig das Workbooks(Wrkbk).Saved = True bei Nein, kann dann auch in das Nein Sub. Läßt du das aber fehlen fragt EXCEL nochmal nach ob du speichern willst.

Option Explicit
Const Wrkbk = "Test.xls" 'Dateiname als Konstante
Sub Workbook()
Workbooks(Wrkbk).Close SaveChanges:=True
End Sub


Private Sub workbook_Beforeclose(Cancel As Boolean)
'Speichern-Abfrage beim Schließen
    Select Case MsgBox("Speichern", vbInformation + vbYesNoCancel)
        Case vbYes: ja    'Makroaufruf bei Ja
        Case vbNo: Workbooks(Wrkbk).Saved = True
    End Select
End Sub


Private Sub ja()
    Workbooks(Wrkbk).Save
End Sub

Gruß Heiko

PS: Rückmeldung wäre nett !
Bild

Betrifft: AW: save wird nicht ausgeführt
von: Andreas
Geschrieben am: 05.04.2005 14:24:47
Hallo Heiko,
heißa-juch-hee es hat geklappt. Ich habe wie von dir beschrieben meine Anweisung "Workbooks(Wrkbk).Close" um den Zusatz "SaveChanges:=True" ergänzt und schon funktioniert es.
Vielen dank nochmals. Ohne dich/euch wäre ich wohl aufgeschmissen.
Viele Grüße,
Andreas
Bild

Betrifft: AW: save wird nicht ausgeführt
von: Andi
Geschrieben am: 05.04.2005 09:09:55
Hi Namensvetter,
vielleicht lädst Du am besten mal ne Mappe hoch; auf den ersten Blick scheint mir Dein Code ein wenig zusammengewürfelt zu sein. ZB definierst Du zwei Variable (Antwort und Frage), die dann nie wieder auftauchen; einer weiteren, nicht definierten, Variable, weist Du einen Wert zu, der dann aber auch nie wieder verwendet wird...
Wenn ich mich recht entsinne, dann hatte ich Dir im letzten Thread zum Thema vorgeschlagen, mittels MsgBox zu überprüfen, ob Excel die Datei für gespeichert hält oder nicht. Leider hast Du darauf nicht mehr geantwortet. Hast Du das ausprobiert, und wenn ja, mit welchen Ergebnis? Wenn nein, warum nicht?
Schönen Gruß,
Andi
P.S.: Ein link auf den alten Thread wäre nett; das erleichtert das Mitlesen und man weiss, was schon alles versucht wurde...
Bild

Betrifft: AW: save wird nicht ausgeführt
von: Heiko S.
Geschrieben am: 05.04.2005 09:13:34
Hallo Andreas,
ich habe ein bisschen Probleme mit deinen Variablen.
Wo und wann wird Wrkbk mit dem Workbook Namen versehen ?
Was machen diese beiden Variablen ?
Dim Antwort%
Dim Frage As String
Hast du noch mehr Code der uns helfen könnte deinen Fehler zu finden, wozu sonst die Variablen.
Gruß Heiko

PS: Rückmeldung wäre nett !
Bild

Betrifft: AW: save wird nicht ausgeführt
von: P@ulchen
Geschrieben am: 05.04.2005 09:17:09
Hallo Andreas,
versuch mal so:


Sub CommandButton1_Click()
DateiSchliessen
End Sub
Sub DateiSchliessen()
Dim Frage As String
Frage = "Soll die Arbeitsmappe geschlossen und gespeichert werden?"
Select Case MsgBox(Frage, vbInformation + vbYesNoCancel)
    Case vbYes
        Application.EnableEvents = False
        ActiveWorkbook.Close True
        Application.EnableEvents = True
    Case vbNo
        MsgBox "Mappe wurde nicht gespeichert!"
End Select
End Sub
Sub Workbook_BeforeClose(Cancel As Boolean)
DateiSchliessen
End Sub

     Code eingefügt mit Syntaxhighlighter 2.1

Gruß aus Leipzig
P@ulchen
Das Forum lebt auch von den Rückmeldungen !
 Bild

Beiträge aus den Excel-Beispielen zum Thema "von Pfad einen Ordner umbenennen"