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