Excel Makro zeitgesteuert starten. Wie?

Ich habe einen Excel-Mappe mit Makro.

Nun möchte ich, dass das Makro zu einem vorgegebenen Intervall (zB „jeden Tag um 7.30Uhr“; oder auch „alle 30min“) automatisch startet.

Die Mappe kann ruhig die ganze Zeit geöffnet bleiben, es muss also nicht Excel, sondern „nur“ das Makro gestartet werden.

Ich hoffe mir kann da jemand helfen?!

Grüße aus Duisburg
Garvey

Hallo, Garvey!

Ich habe einen Excel-Mappe mit Makro.

Nun möchte ich, dass das Makro zu einem vorgegebenen Intervall
(zB „jeden Tag um 7.30Uhr“; oder auch „alle 30min“)
automatisch startet.

Die Mappe kann ruhig die ganze Zeit geöffnet bleiben, es muss
also nicht Excel, sondern „nur“ das Makro gestartet werden.

Nicht schön, das, weil es kein Timer-Ereignis oder so gibt. Möglich wäre es, ein Makro zu schreiben, welches permanent läuft, sich also prinzipiell aufhängt.

Ich würde ggf. ein Formular bauen mit „Start“- und „Abbrechen“-Schaltfläche. Start führt das Makro aus. Abbrechen setzt eine globale Variable, die Du in Deinem Makro als Abbruch-Bedingung verwendest. In der Schleife muss zwischendrin ein „DoEvents“ stehen, damit auf die Abbrechen-Schaltfläche reagiert werden kann.

Also z.B. ungefähr so:

Global gbAbbruch as Boolean

Sub Schleife
 ...
 Do While Not gbAbbruch
 If Now "ungefähr 7:30" Then
 ' Deine Aktionen
 EndIf
 DoEvents
 Loop
End Sub

Sub Start\_Click()
 gbAbbruch=False
 Call Schleife()
EndSub

Wie immer ungetestet/uncompiliert und vor allem ohne Fehlerabfangroutinen etc.

Dabei steht die Start_Click in Deinem UserForm, die Variablendeklaration und Schleife in einem globalen Modul.

Gruß, Manfred

Hallo Garvey,

die Syntax lautet:

Application.OnTime #7:30:00 AM#, „ProgrammName“

Dieser Timer startet das Programm nur einmal, d.h. er muß nach jedem Programmstart neu aufgerufen werden. Optimal ist es, wenn obiges Befehl der letzte im Programm ist.

Martin

Super … aber
Hi,

danke, dass war so ziemlich genau, was ich suchte.
Nun noch eine Nachfrage:

Ich habe die Zeile ans Ende meines Makros gesetzt, mit „Now +“ und dann einer Minutenangabe. Funktioniert bestens, selbst wenn die Arbeitsmappe zwischenzeitlich geschlossen wird. Erst das beenden von Excel stoppt entgültig.

Wie kann ich das ganze irgendwie „eleganter“ stoppen?
Kann ich mit irgendeinem Befehl die Ausführung verhindern?

Grüße aus Duisburg
Garvey

Hi,

Application.OnTime #7:30:00 AM#, „ProgrammName“, , False

Als dritten, wie den vierten ebenfalls optionalen, Parameter kann man eine Zeit einsetzen, bis wann das Makro spätestens ausgeführt werden soll.

Martin

PS: Sag dem Onkel schön danke. Hast Du schon, weiß ich, aber… (*)

Hallo Manfred,

Nicht schön, das, weil es kein Timer-Ereignis oder so gibt.

Hüstel, hüstel. ;o)

WAS machst Du beruflich? ;o))

Martin

Hallo, Martin!

Nicht schön, das, weil es kein Timer-Ereignis oder so gibt.

Hüstel, hüstel. ;o)

Fühle mich belehrt. Kannte ich in der Tat noch nicht, weil ich so was aber unter Excel auch nie gebraucht habe. Aber streng genommen habe ich ja wenigstens mit Teil 1 recht gehabt: Kein Ereignis.

WAS machst Du beruflich? ;o))

Zum Glück wenig genug mit Excel als Oberfläche, dass mich das obige Problem bislang noch nicht tangiert hat. Habe ich mir aber gleich mal ausgedruckt und abgespeichert. Nochmals danke.

Gruß, Manfred