Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
820to824
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
820to824
820to824
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Makro zu bestimmten Zeiten ausführen

Makro zu bestimmten Zeiten ausführen
18.11.2006 19:00:12
Uwe
Hallo Forum,
ich werkel schon seit ein paar Tagen an einem Problem und komm nicht weiter. Bitte helft mir. Ich habe folgenden Code:

Sub ZeitStart()
Dim L As Long
Dim lEnde As Long
lEnde = Range("A65536").End(xlUp).Row
' Do
For L = 2 To lEnde
Application.OnTime TimeValue(Cells(L, 1).Value), "PPT_Starten"
Next L
'Loop
End Sub


Sub PPT_Starten()
On Error GoTo Abbruch
ShellExecute 0, "open", ("O:\PLASMA\PlasmaSlides.pps"), "", "", 3
Abbruch:
End Sub

Sinn des ganzen ist, dass eine Powerpointpräsentation automatisch zu bestimmten Zeiten gezeigt werden soll (den Shell-Befehl habe ich auch hier aus dem Forum, denn so gut bin ich in VBA (noch)nicht). In Spalte A stehen also Uhrzeiten im Textformat untereinander, die der Reihe nach "abgearbeitet" werden sollen. Das funktioniert auch, allerdings wird die Powerpointpräsentation nicht nur einmal sondern mehrmals hintereinander gestartet. Komischerweise ist das manchmal nur drei/viermal und manchmal will es gar nicht aufhören. Selbst wenn ich Excel komplett schließe, läuft dann immer wieder die Präsentation an. Da hilft nur noch den Compi runterzufahren. Weiß jemand wie ich erreichen kann, dass das .pps nur einmal zur jeweiligen Uhrzeit läuft.
Hier schonmal vielen Dank für Eure Hilfe
Gruß
Uwe
(:o)

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro zu bestimmten Zeiten ausführen
18.11.2006 20:06:42
ingUR
Hallo, Uwe,
vor kurzem hatte ich hier auf die wesentlichen Elemente der OntIme-Funktion zum Einsatz wiederkehrender Aufrufe und des Abbruches:
https://www.herber.de/forum/messages/818121.html
Dein Programmcode scheint mir noch in der "Versuchsphase" zu stecken, denn ich kann nicht eindeutig erkennen, welche Kriterien zum Start letztendich dienen sollen (Do ... Loop-Endlosschleife oder Zelleneinträge mit Startzeiten); egal wie auch immer, der Starteintrag gilt nur einmal und muß rekrusiv immer wieder erneurt werden.
Zudem muß der letzte Eintrag in die Vormerkliste der OnTime-Aufrufliste gelöscht werden, wenn die Anwendung abgebrochen werden soll.
Hier eine Grundkonzept, was Du nach Deinen Aufgaben anpassen kannst.
Option Explicit
Dim NextStart As Variant, Idx As Long
Sub PPT_Starten()
Dim L As Long
Dim lEnde As Long
lEnde = Range("A65536").End(xlUp).Row
Idx = Idx + 1
NextStart = Cells(Idx, 1).Value
If NextStart > 0 Then _
Application.OnTime TimeValue(CDate(NextStart)), "PPT_Starten"
On Error GoTo Abbruch
ShellExecute 0, "open", ("O:\PLASMA\PlasmaSlides.pps"), "", "", 3
Abbruch:
End Sub
Sub PPT_Stopp()
Application.OnTime TimeValue(CDate(NextStart)), "PPT_Starten", , False
End Sub
Die beiden Funktionen konen über einen Wechselschalter verwaltet werden (CommandButton;
with CommandButton1
if .Caption="An" then
.caption="Aus"
PPT_Start
else
.caption="An"
PPT_Stopp
end if
end with

Gruß,
UWe

Anzeige
AW: Makro zu bestimmten Zeiten ausführen
18.11.2006 21:02:21
Uwe
Hi Uwe,
danke für Deine Mühe. Ich denke das bringt mich auf jeden Fall weiter. Ich bin im Moment noch auf der Arbeit und meine Konzentration ist nicht mehr optimal. Ich werde Deine Antwort nochmal durchgehen. Im Moment blick ich noch nicht ganz durch (Application.OnTime TimeValue(CDate(NextStart)), "PPT_Starten" würde doch versuchen das laufende Makro nochmal zu starten, ist das ein Versehen oder verstehe ich das falsch?).
Um nochmal klarzustellen was ich beabsichtige: In Spalte A stehen Zeiten, z.B. alle vollen Stunden. Zu diesen Zeiten soll PlasmSlide.pps EINMAL gestartet werden. Mit meinem Makro startet es wie es soll alle Stunde, allerdings mehrmals. (WIE KANN ICH DIE VORMERKLISTE NACH DEM EINMALIGEN START LÖSCHEN?)
Die DO...LOOP Schleife ist nur dafür da, dass das ganze jeden Tag läuft. Habe sie im Moment auskommentiert.
Auf jeden Fall herzlichen Dank für Deine Hilfe. Ich werd noch bescheid sagen wenn ich morgen weitergekommen bin.
Gruß
Uwe
(:o)
Anzeige
AW: Makro zu bestimmten Zeiten ausführen
18.11.2006 22:21:37
ingUR
Hallo, Uwe,
derzeit erzeugt mein Vorschlag nur jeweils ein Eintrag in die OnTimer-Liste. Sobald dieser Eintrag zur Abarbeitung aufgerufen und damit aus der Liste gelöscht wird, wird in dieser Routine ein neuer Eintrag für die darauf folgende Aufrufzeit gesetzt.
Diese Art bedingt, dass die EXCEL-Anwendung während der Zeiten laufen muss, hat aber den Vorteil, dass es nur der Lösuchung des letzten Auftrages aus der Liste bedarf, um die Wiederholungen zu beenden.
Bei Deiner Schelifenlösung, werden alle gültigen Startzeiten in an die Liste übergeben. Soll nun die Ausführung beendet werden, sind alle in der Liste noch anstehenden Aufräge zu läschen. In der Liste ist die Startzeit und die Aufgabe vermerkt.
Soll nun z.B. zu jeder vollen Stunde das Makro "PPT_Start" ausgeführt werden, so werden in Deinem Fall die Zeiten der Spalte A als Startzeiten mit der dazugehörigen aufgabe notiert. Sollen nun um 10:30 Uhr alle weitere Wiederholungsanforderungen gelöscht werden, so sind alle noch eingetragenen Aufträge zu löschen;
Schleife NextStart = (Startzeiten nach 10:00) bis (letzte Zeit des Tage)
Application.OnTime TimeValue(CDate(NextStart)), "PPT_Starten", , False
Nächste Zeit
Es ist also beim Stop in der Spalte A nach der Zeile mit den darauffolgenden Zeiteintrag zu suchen und ab dieser Zeile die "Lösch"-Schleife auszuführen.
Jedoch könnte man man bei festen Zeitintervalen auch auf die Zeitenliste in der Spalte A verzichtem und den Zeitwert durch eine Formel der Startzeit zuweisen.
Warum allerdings bei Deinem Aufrufaufbau die Applikation nach ihrem Aufruf mehrmals ablauft, kann ich Deinem Programmausschnitt nicht entnehmen, sofern die Daten mit vorgesehenem Wert und im richtigen Format aus den Zellen gelesen werden.
Zur Frage, ob den nicht durch den rekrusiven Aufruf bei dem von mir eingesetzen Verfahren, versucht würde, das laufende Makro nochmals zu starten, ist zu antorten, das nicht das Makro aufgerufen wird, sondern ein neuer OnTimer-Eintrag für die folgende Startzeit (idx=idx+1) wird ausgeführt.
Gruß,
Uwe
Anzeige
AW: Makro zu bestimmten Zeiten ausführen
19.11.2006 22:48:21
Uwe
Hallo Uwe,
jetzt hab ich es endlich kapiert. Ich hatte die ganze Zeit ein Brett vor dem Kopf, weil ich immer geglaubt habe mein Programm würde die erste Zeit abrufen, dann bei der OnTime Zeile stehen bleiben bis die Zeit ereicht ist, und dann erst mit Next I weitermachen und die nächste Zeit "laden". Daher hatte ich in Spalte A auch die vollen Stunden nicht nur einmal, sondern, damit es mehrere Tage läuft, immer wieder von neuem aufgeführt.
Jetzt habe ich kapiert, dass alle Zeiten auf einmal "geladen" werden und da wurde natürlich, wenn ich z.B. dreimal hintereinander die Zeiten von O Uhr bis 23 Uhr in Spalte A stehen hatte auch dreimal hintereinenader die Präsentation ausgeführt und nicht erst am nächsten und übernächsten Tag.
Nachdem dieses Brett entfernt war habe ich jetzt auch das mit dem löschen kapiert.
Jetzt klapp alles so wie ich es wollte.
NOCHMAL ALLERHERZLICHSTEN DANK FÜR DEINE AUSFÜHRLICHEN ANTWORTEN UND DEINE GEDULD MIT MIR.
Gruß
Uwe
(:o)
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige