Makro beim schliessen von Excel ausfuehren

Bild

Betrifft: Makro beim schliessen von Excel ausfuehren
von: Roland
Geschrieben am: 04.08.2015 07:59:42

Hallo zusammen,
habe mal wieder ein Problem.
Ich moechte beim schliessen von Excel automatisch ein Makro aufrufen und abarbeiten bevor Excel geschlossen wird.
Habe deshalb gedacht in der Personal.xlsb unter "ThisWorkbook" ein Makro aufrufen zu koennen per

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Call Makroname
End Sub

Das funktioniert jedoch nur wenn ich die Personal schliesse. Nicht jedoch wenn die Personal im Hintergrund per Hide geoffnet ist und Excel geschlossen wird.
Was kann ich tun damit beim Schliessen von Excel ein Makro aus der Personal heraus ausgerufen, abgearbeitet (eine andere Mappe oeffnen, Eintraege per Makro taetigen und wieder schliessen) und erst dann Excel geschlossen wird.
Vielen Dank fuer Eure Hilfe.
Roland

Bild

Betrifft: AW: Makro beim schliessen von Excel ausfuehren
von: Peter Kloßek
Geschrieben am: 05.08.2015 00:40:54
Hallo Roland,
das Ereignismakro (bevor schließen) gehört nicht in die persönliche Makromappe, sondern in die eigentlich betroffene Arbeitsmappe, und zwar unter "Diese Arbeitsmappe", ebenso der mit "Call" aufgerufene Makro (kann auch in ein Modul eingefügt werden). Es klappt bei mir mit Office 2007 und Windows7; müsste eigentlich auch mit höheren Versionen gehen.
M.f.G. Kloßek

Bild

Betrifft: AW: Makro beim schliessen von Excel ausfuehren
von: Roland
Geschrieben am: 05.08.2015 07:07:36
Hallo Peter,
ich moechte mein taegliches Ende der Arbeitszeit automatisch in eine Datei eintragen damit ich das nicht immer vergesse und diese Datei ist geschlossen.
Deshalb wollte ich dies ueber das before close Ereignis in der Personal abfragen, da diese ja immer geoeffnet ist.
Wenn ich abends Excel schliesse sollte das close Ereignis mir die enstprechende datei oeffnen, die Zeit eintragen, speichern , per mail versenden und dann wieder schliessen. Das geht jedoch nicht.
Loese es nun so, dass ich die Datei im Excel Start ablege und diese somit immer geoeffnet ist allerdings versteckt damit ich diese nicht sehe und das Makro in diese Mappe schreibe. Gefaellt mir zwar nicht aber geht auch.
Sollte jedoch jemand eine Idee haben wie ich das loesen kann, das Ereignis schliessen von Excel in der Personal abzufangen waere ich dankbar.
Viele Gruesse
Roland

Bild

Betrifft: evtl. auf Systemebene?
von: Michael
Geschrieben am: 07.08.2015 15:24:13
Hallo Roland,
vielleicht geht es auf Systemebene?
Recherchiere mal: execute program before windows shutdown
evtl. mit Deiner konkreten Win-Version.
Ich habe mal den Treffer
http://stackoverflow.com/questions/101647/how-to-schedule-a-task-to-run-when-shutting-down-windows
überflogen, da steht drin, daß man sowohl Batch-Datein als auch gestandene Programme ("full blown EXEs") aufrufen kann.
Also paßt Du Deine Excel-Datei so an, daß sie beim Öffnen das gewünschte Skript ausführt und sich wieder schließt.
Ich habe das leider auch noch nicht probiert, aber prinzipiell müßte es ja gehen.
Die Frage ist, ob die E-Mail sofort abends verschickt werden muß, oder ob es am nächsten morgen auch genügt.
Dann würde nämlich eine simple Batch-Datei genügen, in der Du die Uhrzeit in eine Datei schreibst; zur Veranschaulichung hier eine DOS-Session:
Userbild
Fall 1: Datum und Zeit werden an eine vorhandene Datei angehängt
Mit copy con wird eine Datei angelegt, deren Eingabe mit Strg+z (ohne Umschalt-Taste) beendet wird.
Das Datum und die Uhrzeit werden mit den nächsten Befehlen jeweils in eine Datei td.txt für Datum bzw. tt.txt für Zeit geschrieben und schließlich zusammen an die vorhandene Datei angehängt, die denn mit type angezeigt wird.
Fall 2: Datum und Zeit überschreiben eine vorhandene Datei
wie gehabt, nur daß beim copy noch die Option /y gesetzt werden muß, damit das System nicht zurückfragt, ob die vorhandene Datei überschrieben werden soll.
Du schreibst die gewünschten Befehle in eine Textdatei und speicherst sie mit der Endung .bat ab - die läßt Du dann von Windows vor dem Herunterfahren ausführen, das geht sicher in Millisekunden, und liest t.txt am nächsten Tag in Excel ein.
Oder Du erzeugst sie direkt in der Kommandozeile:
Userbild
Das angezeigte ^Z gibst Du bitte *nicht* (als einzelne Zeichen) mit ein, das erscheint automatisch, wenn Du Deine Eingabe mit der Tastenkombi Strg+z beendest.
Schöne Grüße,
Michael

 Bild

Beiträge aus den Excel-Beispielen zum Thema "Makro beim schliessen von Excel ausfuehren"