Makros per Timer ausführen

Hallo,

Ich habe ein Formular(Haupmenue)das die ganze Zeit geöffnet bleibt.
Die Timerfunktion ruft zwei verschiedene Makros zu verschiedenen Zeiten auf.
Funktioniert auch.Meistens…
Wenn ich aber ein anderes Programm im Vordergrund habe, z.b. Word IE-Explorer, irgendwas was nicht Access ist, wird der Makroaufruf nicht gestartet.
Wie schaffe ich, das die Makros IMMER gestartet werden, auch aus dem Hintergrund???

Hier der Code zum Aufrufen der Makros:

Private Sub Form_Timer()
If (Hour(Time) = 12 And Minute(Time) = 15 And Second(Time) = 0) Then
DoCmd.RunMacro „Kopie von Übermitteln1215“
End If
If (Hour(Time) = 8 And Minute(Time) = 45 And Second(Time) = 0) Then
DoCmd.RunMacro „Übermitteln845“
End If
End Sub

Hat jemand eine Idee wie das Funktionieren kann???
Danke
Nils

Hallo Nils,

Wie schaffe ich, das die Makros IMMER gestartet werden, auch
aus dem Hintergrund???

nun ja, deine Bedingung ist auf die Sekunde genau, d.h. nur wenn der Timer in der Sekunde genau diese Timerfunktion ausführt, würde dein Makro gestartet.

Du solltest dem Programm einfach mehr Zeit geben, so 1 - 5 Minuten, dann sollte es funktionieren.

Z.B.:

If (Hour(Time) = 12 And Minute(Time) >= 15 And Minute(Time)

Ja, das ist richtig, ich muss dem Timer eine größere Chance geben als nur eine Sekunde, um das Makro zu Triggern.
Nun fuktioniert der Aufruf immer.
Code:
Private Sub Form_Timer()
If (Hour(Time) = 12 And Minute(Time) >= 15 And Minute(Time) = 45 And Minute(Time) [Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo.

Nochmal: Wenn der Timmer das Makro startet(Funktioniert gut)
soll eine Pause gemacht werden.(Entweder am ende des Codes
oder am Ende des jeweiligen Makros).

So was …?

'
'delay loop
'March 20, 2007
'

Public Function boo\_WaitSecs(Optional ByVal lpi\_byt\_SecPause As Byte = 3) As Boolean

'SecPause : seconds to wait (omitted =\> 3)

Dim lpm\_dat\_CallTime As Date 'time the function is called
Dim lpm\_dat\_ProcTime As Date 'actual process time

lpm\_dat\_CallTime = Now() 'initialize
lpm\_dat\_ProcTime = Now() 'initialize

While ((lpm\_dat\_ProcTime - lpm\_dat\_CallTime) "pco\_lng\_SECSADAY" ist bei mir eine benannte Konstante, Long, mit dem Wert 86400. Kannst natürlich stattdessen auch 86400 hart codieren - ich habe nur was gegen magic numbers.

Gruß Eillicht zu Vensre

Hallo Nils,

ich würde zwei globale Variablen deklarieren:
Ü0845 = True
Ü1215 = True

dann den Code ändern:

Private Sub Form_Timer()
If Ü1215 and (Hour(Time) = 12 And Minute(Time) >= 15 And Minute(Time)
= 45 And
Minute(Time)

Hallo, erstmal VIELEN DANK für eure Hilfen, alleine hätt ich schon aufgegeben…

Ja, das mit den Globalen Variablen, und dem False/True wechsel
finde ich sehr elegant gelöst, dummerweise binn ich halt nicht der Access Profi, daher noch eine Frage zum Definieren von Globalen Variablen.
Ich habe jetzt ein modul(Modul1) erstellt und mit folgendem Inhalt gefüllt:

Option Explicit
Option Compare Database
Public Ü0845 As Long
Public Ü1215 As Long

gibt keine beschwerden , funktioniert aber auch nicht…
irgend was mach ich noch falsch…anny sugestions??

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo Nils,

Option Explicit
Option Compare Database
Public Ü0845 As Long
Public Ü1215 As Long

gibt keine beschwerden , funktioniert aber auch nicht…
irgend was mach ich noch falsch…anny sugestions??

der Ansatz war/ist schon richtig, aber:

die Variablen sind vom Typ Boolean = True/False. Deine Deklaration bezieht sich auf nummerische Werte.

Option Explicit
Option Compare Database

Global Ü0845 As Boolean
Global Ü1215 As Boolean

Global ist ein Bereich, der programmweit Gültigkeit hat.
Public geht natürlich auch, die Gültigkeit der Variablen würde dann nur für das aktuelle Modul gelten, was in deinem Fall ausreichend wäre.

Grüße aus Raben Steinfeld (bei Schwerin)
Wolfgang
(Netwolf)

Ah ja, so langsam wir die Sache rund.

`Das Modul1:

Option Explicit
Option Compare Database

Global Ü0845 As Boolean
Global Ü1215 As Boolean

`Und der Timer Code:

Private Sub Form_Timer()

If Ü1215 And (Hour(Time) = 12 And Minute(Time) >= 15 And Minute(Time) = 45 And Minute(Time)

ok, noch eine kleine Erweiterung, dann sollte es laufen:

`Das Modul1:
Option Explicit
Option Compare Database
Global Ü0845 As Boolean
Global Ü1215 As Boolean

und die Voreinstellung der Variablen z.B. beim Laden des Formulars mit dem Timer:

Private Sub Form_Load()
Ü0845 = True
Ü1215 = True
End Sub

`Und der Timer Code:
Private Sub Form_Timer()
If Ü1215 And (Hour(Time) = 12 And Minute(Time) >= 15 And
Minute(Time) = 45 And
Minute(Time)

Makroper Timer ausführen Problem gelöst!
Danke für eure Kreativen Hilfestellungen die Aufgabe ist gelöst,
der Timer läuft perfekt!!!

DAAAAANKEEEE!!!

Gruß

Nils