Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1852to1856
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_BeforeSave Hilfe

Workbook_BeforeSave Hilfe
28.10.2021 08:41:25
Peter
Hallo ihr Excelspezialisten,
ich habe immer wieder Probleme wenn nach dem speichern und beenden der Arbeitsmappe die Arbeitsmappe wieder geöffnet wird.
Zum Beenden benutze ich folgenden Code:

'Beenden
Private Sub CommandButton2_Click()
'Anfang aktuellen Pfad in Worddaten B59 einfügen für Prüfung in DieseArbeitsmappe Workbook_Open
Call aktuellen_Pfad_Inhalt_kopieren_einfügen
'Ende aktuellen Pfad in Worddaten B59 einfügen für Prüfung in DieseArbeitsmappe Workbook_Open
If Application.Workbooks.Count > 1 Then
'Calculate
ThisWorkbook.Save
ThisWorkbook.Close
Exit Sub
ElseIf Application.Workbooks.Count = 1 Then
'Calculate
ThisWorkbook.Save
''ThisWorkbook.Close    'darf nicht aktiviert werden
Application.Quit
End If
End Sub
Ich habe festgestellt, dass dann die Daten nicht vollständig gespeichert sind.
Nun zu meiner konkreten Frage:
Hilft es vielleicht, dass ich in "DieseArbeitsmappe" folgenden Code einbaue:

Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Application.EnableEvents = False
ThisWorkbook.Save
Application.DisplayAlerts = False
ThisWorkbook.SaveCopyAs "C:\Users\Peter\Desktop\Test_Sicherungskopie_erstellen\Sicherungskopien\" & "Sicherungskopie von_" & ThisWorkbook.Name
Application.DisplayAlerts = True
Application.EnableEvents = True
End Sub
Kann dadurch der zuvor beschriebene Fehler verhindert werden. Vielleicht könnt ihr mir die Arbeitsweise von "Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)" kurz erklären.
Besten Dank
Gruss
Peter

20
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Workbook_BeforeSave Hilfe
28.10.2021 10:19:45
Michael
Hallo Peter,
zur Arbeitsweise von Workbook_BeforeSave hilft vielleicht das hier weiter:
https://docs.microsoft.com/de-de/office/vba/api/excel.workbook.beforesave
Ansonsten halte ich für ungünstig in dieser Prozedur ThisWorkbook.Save aufzurufen/auszuführen, weil das erneut zur Ausführung eben dieses Events Workbook_BeforeSave führen könnte. Dann dreht sich alles im Kreis, oder?
Gruß
Michael
AW: Workbook_BeforeSave Hilfe
28.10.2021 10:35:21
Peter
Hallo Michael,
besten Dank für Deinen Hinweis. Denvon Dir angegebenen Link kenne ich bereits. Er hat mich aber nicht wirklich weitergebracht.
Es geht darum, wenn ich die Arbeitsmappe schliesse, dann kommt es vor - Ursache kenne ich leider nicht - , dass diese nicht ordnungsgemäss gespeichert wird und beim erneuten Öffnen die Fehlermeldung kommt. ."..soll die Datei repariert werden dann ja drücken sonst nein".
Wenn ich jetzt das speichern über das Ereignis "Workbook_BeforeSave..." durchführe, dann wird die Arbeitsmappe doch gespeichert bevor diese geschlossen wird und die gleiche Datei wird als Sicherungsdatei angelegt. Warum dieses Event erneut aufgerufen werden soll oder kann und sich dann im Kreis drehen soll verstehe ich nicht.
Gruss
Peter
Anzeige
AW: Workbook_BeforeSave Hilfe
28.10.2021 12:00:01
Michael
VB und VBA sind event-orientiert. Man macht irgendwas, einen Zellinhalt ändern, und das Event/Ereignis "Worksheet_Change" wird ausgelöst. Ob man will oder nicht. Wurde dieses Event mit Code versehen, wird dieser ausgeführt. Egal, was sich ändert. Soll das Ereignis nur ausgeführt werden, wenn sich bspw. in Zelle C8 was ändert, muss das entsprechend abgefangen werden. Dieser "Türsteher" wäre dann If Not Target.Address = Range("C8").Address Then Exit Sub.
Ob dieser Umstand bei Dir tatsächlich ein Problem ist, weiß ich aber nicht. Um Deinen Code wirklich zu debuggen, wäre praktisch, Du könntest die Datei mal hochladen.
Anzeige
AW: Workbook_BeforeSave Hilfe
28.10.2021 13:46:19
Peter
Hallo Michael,
ich baue gerade eine Musterdatei, da die Orginaldatei viel zu umfangreich ist und vertrauliche Daten enthält.
Jetzt musste ich jedoch feststellen, dass beim Beenden über Userform das Ereignis "Workbook_BeforeSave" nicht ausgeführt wird.
Was mache ich hier bitte falsch?
Gruss
Peter
Events abgeschaltet?
28.10.2021 14:06:28
Rudi
Hallo,
bei mir wird das ausgeführt. Hast du evtl. die Events ausgeschaltet?
Gruß
Rudi
AW: Events abgeschaltet?
28.10.2021 17:31:38
Peter
Hallo Rudi,
ich habe da eine Arbeitsmappe erstellt, welche ich hochlade.
anbei Datei: https://www.herber.de/bbs/user/148840.xlsm
Die Arbeitsmappe "Mappe1" befindet sich im Ordner "Test_Sicherungskopie_erstellen". Die Sicherungsdatei soll im Ordner "Sicherungskopien" gespeichert werden.
Die Arbeitsmappe öffnet Userform1. Wenn Du in der ersten Zeile in der linken oder mittleren Textbox die Zahl änderst und dann mit Button Daten übertragen durchführst, dann wird das Ergebnis in der Textbox-Zeile unten aufgeführt.
Wenn dann mit Button Beenden das Programm gespeichert und beendet wird, dann müsste die Arbeitsmappe Sicherungskopie von_Mappe1.xlsm im Ordner Sicherungskopien gespeichert werden.
Wird bei mir leider nicht ausgeführt. Ich weiss nicht, wo der Fehler liegen soll.
Gruss
Peter
Anzeige
AW: Events abgeschaltet?
28.10.2021 19:10:27
Michael
Hallo Peter,
dass "ThisWorkbook.Save" mit in Workbook_BeforeSave steht, macht gar nichts aus, fiel mir halt nur auf. Aber das bringt eigentlich nichts, denn das steht ja schon in CommandButton2_Click(), wodurch das Event Workbook_BeforeSave ausgelöst wird. Es wird wohl Dein "Application.EnableEvents = False" in der Zeile darüber sein, warum sich das nicht "im Kreis dreht"...
Anyway, das war nicht das Problem.
In Workbook_BeforeSave ergänzte ich mir vor ThisWorkbook.SaveCopyAs die Zeile
MsgBox "Kurz vorm Speichern..."
So sah ich, wann das Event überhaupt durchlaufen wird. (Beim ersten Versuch wurde es auch durchlaufen, da bekam ich die Meldung, es gäbe den Pfad nicht. Dem war auch so ;-)
Das Event wird immer durchlaufen, egal wie ich speichere, sei es mit Deinem Button, sei es in Excel mit der Diskette oder per Strg+s, sei es im VBA-Editor per Diskette oder Strg+s. Sicherungskopien werden aber nur in den letzten beiden Fällen erzeugt. Und eben leider nicht, wenn Dein Button gedrückt wird. Leider verstehe ich auch nicht warum das so ist. Aber vielleicht helfen meine Versuche ja Rudi weiter? Würd mich freuen.
LG Michael
Anzeige
AW: Events abgeschaltet?
29.10.2021 05:48:45
Peter
Guten Morgen Rudi,
kannst Du bitte mal das ansehen, was Michael festgestellt hat.
Ich habe festgestellt, dass die Sicherungsdatei manchesmal gespeichert wird und manchesmal nicht. Das ist jedoch nicht befriedigend.
Kennst Du vielleicht eine Lösung.
Gruss
Peter
AW: Events abgeschaltet?
29.10.2021 08:10:03
Michael
Moin,
hatte da noch ne Idee. Ich weiß nicht warum, aber wenn Du die Zeile
ThisWorkbook.SaveCopyAs ThisWorkbook.Path & "\Sicherungskopien\Sicherungskopie von_" & ThisWorkbook.Name
in die Sub CommandButton2_Click() überführst, klappt es jedes Mal! Zumindest hat es hier gerade dreimal hintereinander funktioniert.
Grüße
Michael
Anzeige
AW: Events abgeschaltet?
29.10.2021 13:22:51
Peter
Hallo Michael,
besten Dank für Deine Antwort. Diese Idee hatte ich auch schon.
Wenn eine Exceldatei gespeichert wird, dann wird so viel ich weiss auch eine Datei angelegt in denen die dazugehörige Formeln und Formate ect. gespeichert. Wird diese nicht richtig gespeichert kommt bei Öffnen die Meldung - soll die Datei repariert werden ....
Hast du eine Ahnung, wie geprüft werden kann, ob diese Datei gespeichert wurde? Soviel ich weiss irgendwo in Appdata.
Gruss
Peter
AW: Events abgeschaltet?
29.10.2021 13:23:07
Peter
Hallo Michael,
besten Dank für Deine Antwort. Diese Idee hatte ich auch schon.
Wenn eine Exceldatei gespeichert wird, dann wird so viel ich weiss auch eine Datei angelegt in denen die dazugehörige Formeln und Formate ect. gespeichert. Wird diese nicht richtig gespeichert kommt bei Öffnen die Meldung - soll die Datei repariert werden ....
Hast du eine Ahnung, wie geprüft werden kann, ob diese Datei gespeichert wurde? Soviel ich weiss irgendwo in Appdata.
Gruss
Peter
Anzeige
AW: Events abgeschaltet?
29.10.2021 13:59:52
Michael
Hallo Peter,
das müsste hier sein ...AppData\Roaming\Microsoft\Excel\XLSTART
Ob da eine Datei ist oder nicht, sollte so ermittelt werden können:
https://stackoverflow.com/questions/16351249/vba-check-if-file-exists/33771924
(Vielleicht gibt's auch hier im Forum was dazu? Meist tipp ich auf englisch ein, was ich zu vba suche...)
Viele Grüße
Michael
AW: Events abgeschaltet?
29.10.2021 14:04:42
Peter
Hallo Michael,
besten Dank für die schnelle Antwort. Werde das mal prüfen, ob dies für meine Zwecke verwendbar ist.
Übrigens die Dein vorletzter Hinweis mit der Zeile in den Code von Button "Beenden" einzufügen funktioniert. Jedoch beim Öffnen der Sicherungsdatei ergibt sich noch ein Fehler, da die Sicherungsdatei die geöffnete Datei ist.
Gruss
Peter
Anzeige
AW: Events abgeschaltet?
29.10.2021 14:58:44
Michael
Komisch, bei mir nicht.
Erst wenn ich die Datei mit Deinem Beenden-Button schließen möchte. Sie will ja dann auch eine Sicherungskopie erstellen und den Pfad ...\Sicherungskopie\Sicherungskopie\... gibt es natürlich nicht.
Wo in der Sub CommandButton2_Click() steht bei Dir die Zeile ThisWorkbook.SaveCopyAs...
Ich hab sie gleich als erste Zeile eingefügt, vors IF.
In Workbook_BeforeSave steht bei mir gar nichts mehr.
Grüße
Michael
AW: Events abgeschaltet?
30.10.2021 11:13:13
Peter
Hallo Michael,
das mit dem Sichern der Datei funktioniert einwandfrei. Nur wenn ich die Sicherungsdatei öffenen und dann wieder schliessen wollte kam eine Fehlermeldung.
Diesen Fehler habe ich jetzt beseitigt.
neue Datei anbei: https://www.herber.de/bbs/user/148869.xlsm
Jetzt werde ich noch deinen angeführten Link ansehen und schauen, ob er zweckdienlich ist.
Wünsche ein schönes Wochenende
Gruss
Peter
Anzeige
AW: Events abgeschaltet erledigt
30.10.2021 12:02:15
Peter
Hallo Michael,
ich habe mir den Link mal angesehen. Dieser ist nicht zutreffend.
Die Fehlermeldung beim Öffnen entsteht, wenn aus irgend einem Grund die Datei nicht richtig bzw.vollständig gespeichert wurde.
Hierfür gibt es aber keine eindeutige Lösung.
Gruss
Peter
AW: Events abgeschaltet?
01.11.2021 08:37:25
Michael
Moin,
nun krieg ich beim "Beenden" den "Laufzeitfehler 9: Index außerhalb des gültigen Bereichs". "Debuggen" bringt mich zu dieser Codezeile: "gesName = DateiListe(x)". Die ist neu. Mir erschließt sich gerade nicht spontan, was da eigentlich passieren soll.
Kriegst Du die Meldung vielleicht nicht? Die Datei geht trotzdem zu und ist dann natürlich nicht gespeichert?
Ob eine Datei existiert kriegst Du so raus:

Sub CheckFileExists()
Dim strFileName As String
Dim strFileExists As String
strFileName = "D:\Dokumente\148869.xlsm"
strFileExists = Dir(strFileName)
If strFileExists = "" Then
MsgBox "The selected file doesn't exist"
Else
MsgBox "The selected file exists"
End If
End Sub
Siehe https://www.automateexcel.com/vba/file-exists/
Hier hab ich auch gesucht, find aber nix mit "Datei exist" oder "File exist" :(
Für Deine Zwecke wird wahrscheinlich das hier reichen :

Function CheckFileExists(strFileName As String) As Boolean
Dim strFileExists As String
strFileExists = Dir(strFileName)
CheckFileExists = Len(strFileExists) > 0
End Function
Welche Datei wird denn bei Dir eigentlich nicht richtig gespeichert. Das Original oder die Sicherungskopie?
LG Michael
Anzeige
AW: Events abgeschaltet?
01.11.2021 11:05:06
Peter
Hallo Michael,
vielen Dank, dass Du dir noch weitere Gedanken machst. Bei mir funktioniert alles einwandfrei. Keine Probleme beim Debuggen. Du hast schon die neue Datei benutzt?!
Ich liste beim Öffnen die Unterverzeichnisse auf, sowie die darin befindlichen Dateien. Die Zeile, die bei Dir nicht funktioniert gehört zu der Prüfung, ob die Datei existiert, da ansonsten beim Öffnen der Sicherungsdatei diese nicht geschlossen werden kann.
Das Problem ist, das die Originaldatei nicht immer gespeichert wurde. Dies ist aber nicht auf meinem Rechner der Fall sondern auf dem Rechner, auf welchem die Datei arbeiten soll. Daher kann ich dies auf meinem Rechner nicht testen. Ich bekomme diese Woche einen separaten Rechner, auf welchem ich testen werde, ob dort der Fehler ebenfalls auftritt.
Es ist durchaus möglich, dass der bisherige Rechner auch die Orginal und die Sicherungsdatei nicht richtig speichert. Ich weiss nur, dass der Fehler auch auftrat, wenn ich aus der Orginaldatei ein Worddokument geöffnet habe und dieses beim Schliessen unter anderem Namen speichere. Wenn ich dieses Dokument dann öffne, dann sind die Daten mit Formeln nicht als Werte gespeichert. Ursache auch hier unbekannt.
Auf meinem Rechner passiert dies nicht. Stehe vor einem wahrscheinlich unlösbaren Rätsel.
Bin schon am überlegen, ob ich ein kleines Programm erstelle mit welchem ich die Datei repariere.
Gruss
Peter
Dann sind wir hier ja durch...
01.11.2021 12:42:34
Michael
...und den Rest zwischen Himmel und Windows kriegen wir hier eh nicht gelöst ;-)
AW: Dann sind wir hier ja durch...
01.11.2021 13:21:43
Peter
Hallo Michael,
... ja ich stimme Dir zu. Nochmals vielen Dank und eine gesunde, gute Zeit.
Gruss
Peter

34 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige