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

Makro bei Herunterfahren/Neustarten des OS

Makro bei Herunterfahren/Neustarten des OS
14.02.2013 08:49:27
Michael
Guten Tag !
... Personen, die auf eine freundliche Einleitung keinen Wert legen bitte den FETT dargestellten Text lesen :-)
Seid nunmehr 2 Jahren programmiere ich an einem sehr komplexen EXCEL-Programm zur Personaleinsatzplanung ... wie so viele :-) - Ich hätte nie damit anfangen sollen !
Hier habe ich in der Vergangenheit natürlich auch immer wieder in diesem Forum nachgeschaut, um Lösungsansätze zu erhalten. In diesem Zusammenhang: Ein riesen Lob an dieses Forum und Herrn Herber ! - Könnte ich so strukturiert programmieren, müsste ich nicht stundenlang meinen Spagetticode (ca. 40000 Wörter) durchsuchen, weil ich mich selbst nicht mehr auskenne.
Aber nun zu meinem eigentlichen Problem:
Das Programm stellt Jahres- und Tagesdaten in einer Maske mit Hilfe von Kennbuchstaben (z.B. "K"=Krank) und bedingter Formatierung da. Diese Daten werden über VBA Routinen bei Wochen-/Jahreswechsel in einer CSV-Datei gespeichert.
Beendet nun der Anwender (der akt. meist mein größtes Problem darstellt) Windows - also das Betriebssystem, ohne vorher die von mir verwendete Programmfunktion zum Beenden anzuwählen, so erhält er (seitens des OS) die Meldung "Sollen Ihre Änderungen in .... gespeichert werden". Selbst wenn der Anwender hier mitdenkt und "Ja" betätigt, so wird lediglich das Programm aber nicht eventuell geänderte Daten (die ja über VBA als CSV exportiert werden) gespeichert. - Folge: Datenverlust !
Ich suche nach einer Möglichkeit (EVENT-Ereignis ?) bei Herunterfahren des OS ein Makro auszuführen. Das Ereignis "BeforeClose" oder "BeforeSave" scheint nicht zu greifen, das verwendet ich schon.
Für sachdienliche Hinweise die zur Ergreifung einer Lösung führen kann ich leider keine Belohnung aussetzen, aber mein ewig ergebener Dank wird Euch gewiss sein.
Gruß,
Michael :-)

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro bei Herunterfahren/Neustarten des OS
14.02.2013 09:32:50
Sheldon
Hallo Michael,
was Du suchst, ist das Workbook_BeforeClose Ereignis. Das findest Du im Projekt-Explorer bei DieseArbeitsmappe, links oben Workbook auswählen und rechts oben BeforeClose. Es wird ein Sub erzeugt mit ebendiesem Namen. Darin schreibst Du die Anweisung zum Exportieren (idealer Weise ist das ein separates Makro, dann brauchst Du nur dessen Namen in den Code einzutragen ;-))
Auch die Speichern-Aufforderung wird übrigens nicht vom OS ausgelöst, sondern von Excel, das wiederum den Befehl zum Beenden vom OS erhalten hat, aber ganz normal seine Events ausführt.
Gruß
Sheldon

Anzeige
AW: Makro bei Herunterfahren/Neustarten des OS
14.02.2013 09:43:37
Klaus
Hallo Sheldon,
was Du suchst, ist das Workbook_BeforeClose Ereignis
Das Ereignis "BeforeClose" oder "BeforeSave" scheint nicht zu greifen,
Hallo Michael,
ich würd ein solches Problem ja banaler lösen, und zwar mit einem Post-It Zettel am Monitor des fraglichen Users. Du kannst eh nicht alles verhindern, was der User an Mist anstellt. Es gibt ja auch kein "WorkbookBefore_Stromkabel_Rausreißen" und kein "WorkbookBefore_Kaffe_über_Tastatur".
Grüße,
Klaus M.vdT.

AW: Makro bei Herunterfahren/Neustarten des OS
14.02.2013 11:05:00
Michael
Hallo Klaus,
warum mache ich mir eigentlich die Mühe, eine techn. Lösung für mein Problem in einem Forum für Excel VBA zu stellen, wenn doch die Lösung mit dem PostIt so einfach wäre ? - Das nächstemal kann ich dann mein Problem auch in einem Hausfrauenforum stellen !
Anm.: Ich habe nichts gegen Hausfrauen, nur um eventuell folgenden gleichermaßen sinnfreien Kommentaren entgegen zu wirken.
Die Nutzer (Assistenskräfte in der Zahnarztpraxis) nutzen viele Programm und das was Sie nicht gerade benötigen wird halt gerne minimiert (also in die Taskleiste verschoben) ohne gleich das Prog. zu schließen. Das ist an sich auch nicht verwerflich, nur bei Feierabend hat halt ein Nutzer den Rechner runtergefahren und lediglich eventuelle Hinweise (Wollen Sie Speichern ?) mit "Ja" beantwortet.
Nutzer, die einen Rechner herunterfahren, ohne ein Programm mit Zugriff auf zentrale Daten sauber zu beenden (und damit die DB auch wieder freizugeben), lassen sich auch nicht durch ein PostIt beinflussen. Ich habe schon Nutzer gehabt, die das Prog. auf einem USB-Stick haben, dieses Starten, während der Verwendung den Stick rausziehen und sich dann bei mir Beschweren, dass das Prog. beim Speichern der Daten mit einem VBA-Makrofehler abbricht. - Dieser und viele andere Benutzerfehler wurden schon abgefangen.
Wie zuvor erwähnt: Die Benutzer sind derzeit mein größtes Problem !
Über eine Funktion "Automatisches Speichern" werden schon alle Daten zyklisch in die DB gespeichert, wenn man denn ein Serververz. mit verschiedenen CSV-Dateien überhaupt als Datenbank bezeichnen darf :-).
Das Problem ist aber, dass ohne ein sauberes Beenden des Programmes eine Flag-Datei in diesem Verzeichnis (die anzeigt, welcher Benutzer auf welchem Host Zugriff auf die Dateien hat) nicht gelöscht wird und somit die Dateien für andere Nutzer nicht freigegeben werden.
Gruß,
Michael

Anzeige
AW: Makro bei Herunterfahren/Neustarten des OS
14.02.2013 11:33:38
Klaus
Hallo Michael,
danke für deine ausführliche Antwort auf meinen - zugegebenerweise weniger zweckmäßigen - Kommentar. Tatsächlich war mein Beitrag aber konstruktiv gemeint: der Kern "man kann nicht jede Dummheit der User verhindern" ist wahr.
Deine Erklärung des Problemauftetens (runterfahren bei minimiertem Excel) ist nachvollziehbar und verständlich.
Ich habe schon Nutzer gehabt, die das Prog. auf einem USB-Stick haben, dieses Starten, während der Verwendung den Stick rausziehen und sich dann bei mir Beschweren, dass das Prog. beim Speichern der Daten mit einem VBA-Makrofehler abbricht. - Dieser und viele andere Benutzerfehler wurden schon abgefangen.
Dieses dagegen nicht - das ist, imho, ein Beispiel von "selbst schuld". Wenn du als Programmierer auch einen solchen "DummerUser" fehler abfedern kannst und bereit bist dich darauf einzulassen, dann (und das meine ich 100% ernst und ironiefrei!) ziehe ich meinen Hut vor dir und spreche dir meinen Respekt aus.
Abschließend:
Entschuldige wenn mein Posting falsch ankam. Hier werden sehr oft Lösungsanfragen für das banale "User ist Dumm" Problem gepostet - überspitztes Beispiel "Mein User muss den Button drücken, wo DRÜCK MICH draufsteht - wie zwinge ich ihn dazu?"
Deine Anfrage habe ich, das erkenne ich aus deiner Erklärung, falsch eingeschätzt!
Grüße,
Klaus M.vdT.
P.S.: Mit Nepumuk hat sich einer der besten (oder sogar der beste?) VBAler in diesem Forum deinem Problem angenommen, ich bin mir sicher ihr findet eine Lösung!

Anzeige
AW: Makro bei Herunterfahren/Neustarten des OS
14.02.2013 12:06:42
Michael
Hallo Klaus,
Schwamm drüber ! ... ich schätze Deine ansonsten hier zu findenden Tipps und Tricks sehr. Viele der in meinem Programm umgesetzen Funktionen und Darstellungen basieren auf Hajo´s, Deinen, Nepumuk´s und anderen Einträgen.
Was den DAU betrifft: Ja ich versuche (ist aber nicht möglich) alle eventuellen Fehler abzufangen. Ist mittlerweile schon zu einem zwanghaften Handeln geworden. Noch ein schönes Beispiel: Das Prog. erlaubt Festlegungen bzgl. Datenverzeichnis und Backupstrategien. Die Erreichbarkeit der festgelegten Verz. wird vor jedem Schreibvorgang überprüft (gerade bei Netzwerk oder Cloud sinnvoll).
Bild hier: Userbild
- Alles Prima, bis der erste Benutzer auf die Idee gekommen ist ein CD-Rom Laufwerk auszuwählen... und wieder ERROR ! Auch dieses Problem konnte Dank des Forums gelöst werden, in dem ich nun nach Auswahl eines Laufwerkes den Typ (Wechseldatenträger, USB-Device, Netzwerk, Festplatte) ermittel.
Was Deine Formatierung eines Labels betrifft: Wenn keiner schummeln würde hätten wir reale Doktoren und Lasagne mit guten dt. Schweinefleisch. Der Zweck heiligt hier die Mittel und die Verwendung einer Listbox oder Textfeldes ist für den Nutzer nicht zu erkennen.
Was mein Problem betrifft: Ich hoffe hier noch auf Nepumuk und ansonsten gibt´s bei jeder Inst.-CD einen PostIt-Block dazu oder einen Hinweis in der Prog.-Doc. (die ja aber auch keiner liest).
Grüße,
Michael :-)

Anzeige
AW: Makro bei Herunterfahren/Neustarten des OS
14.02.2013 10:44:50
Michael
Hallo Sheldon,
wie gesagt: Das Workbook_BeforeClose Ereignis greift hier nicht ! - Das verwende ich bereits. Dieses wird nicht gestartet, wenn Du beim OS "START", "Computer Ausschalten" anwählst. Richtig ist, dass seitens EXCEL ein Fenster erscheint, welches nachfragt ob eventuelle Änderungen gespeichert werden sollen. Aber die im Workbook_BeforeClose festgelegten Anweisungen zum Exportieren der Daten oder auch nur eine einfach eingefügte MsgBox wird hier nicht ausgeführt.
Starte doch einfach mal die angehängte Datei, ändere einen Zelleintrag und Beende dann Dein Windows ohne die Exceldatei vorher zu speichern:
https://www.herber.de/bbs/user/83900.xlsm
Gruß,
Michael :-)

Anzeige
du meine Güte, glatt überlesen!
14.02.2013 18:23:18
Sheldon
Hi Michael,
es ist sogar fett gedruckt und ist trotzdem nicht in meinem Verstand angekommen.
Gruß
Sheldon

AW: Makro bei Herunterfahren/Neustarten des OS
14.02.2013 09:38:19
Nepumuk
Hallo,
welches Betriebssystem in welcher Edition ? Denn nicht alle können das. Und du kannst maximal ein Script starten welches dann gewisse Aufgaben ausführt.
Gruß
Nepumuk

AW: Makro bei Herunterfahren/Neustarten des OS
14.02.2013 10:47:27
Michael
Hallo Nepumuk !
Das Programm wird auf XP, Vista und Windows 7 genutzt. Als EXCEL verwenden meine Kunden 2007/2012.
Gruß,
Michael :-)

AW: Makro bei Herunterfahren/Neustarten des OS
14.02.2013 12:01:16
Nepumuk
Hallo,
schau mal hier, die Anleitung ist gut verständlich. Das musst du aber auf jedem Rechner machen. :-(
http://www.winfaq.de/faq_html/Content/tip1000/onlinefaq.php?h=tip1004.htm
Wie du per Script dann die gewünschte Funktion ausführen kannst, solltest du mit "VBA gut" selber hinbekommen. Wenn nicht kann ich dir helfen.
Gruß
Nepumuk

Anzeige
AW: Makro bei Herunterfahren/Neustarten des OS
14.02.2013 12:37:47
Michael
Gute Idee !
Mein Lösungsansatz (der mir aber nur bedingt gefällt): Über ein DOS-Batch könnte ich die Existenz der Flag-Datei abfragen - wenn die existiert ist mein Programm und damit der Zugriff auf die CSV-Dateien geöffnet und dann durch das Batch eine zweite Datei anlegen (z.B. ShutdownRequest.txt). Excel müsste dann aber - und deswegen gefällt mir das nicht - zyklisch in kurzen Abständen (OnTime) die Existenz dieser Datei abfragen und dann die Makros zum Herunterfahren starten (dieses löscht dann die Flag-Datei) was für das Batch wieder rum Zeichen zum Beenden und Fortsetzen des Shutdowns wäre.
Finde ich aber nicht besonders elegant (auch wieder geschummelt), unsicher und (Du hast es schon erwähnt) auch aufwendig, da ich dann auf jedem Rechner in die Gruppenrichtlinien einwirken muss. Leider sind viele Rechner der Nutzer (Arztpraxis) ziemlich "verrammelt" und ich komme hier aufgrund von Beschränkungen, ActiveDirectory usw. nicht immer in diese Richtlinien.
Gibt´s denn da keine API oder ähnliches was ich abfragen kann (in beinem Excel VBA) ob ein Shutdown/Restart eingeleitet wurde ?
Über einen Lösungsansatz wäre ich Dir sehr dankbar.
Gruß,
Michael :-)

Anzeige
AW: Makro bei Herunterfahren/Neustarten des OS
14.02.2013 17:47:21
Nepumuk
Hallo,
Gibt´s denn da keine API oder ähnliches was ich abfragen kann (in beinem Excel VBA) ob ein Shutdown/Restart eingeleitet wurde ?
NEIN, denn in dem Moment ist es schon zu spät. Die vorgeschlagene Lösung ist die einzig sichere, alles andere ist gefummelt.
Gruß
Nepumuk

AW: Makro bei Herunterfahren/Neustarten des OS
14.02.2013 18:20:19
Michael
Ist denn mein Lösungsansatz der richtige (also mit Batch, Datei zyklisch überprüfen) ?
Ich habe in einem anderen Forum auch noch dies hier gefunden:
http://www.cpearson.com/excel/ExcelShutdown.htm
Ein interessanter Ansatz wo mittels COM Add-In der Shutdown abgefangen wird und eine zuvor festgelegte Sub gestartet wird.
Leider kriege ich das zum Verrecken nicht hin. Habe das Beispiel "download a zip file" runtergeladen und auch das Add-In geladen. Anschließend wir beschrieben das Module "modHiddenNames" importiert und über die Anweisung "AddHiddenName" auch die beiden Subs deklariert, die bei einem "User Close" oder "Host Shutdown" Ereignis ausgelöst werden sollen.
Keine Ahnung, warum es nicht funkt, normalerweise sind die Lösungen von cpearson recht gut.
Ich mach´s wie von Klaus empfohlen und gibt jedem ein PostIt.
Wenn ich es doch noch hinbekomme, melde ich mich.
Danke für die Hilfe.
Gruß,
Michael :-)
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige