Powerpoint VB 'Play' und 'Pause'-Button

Hallo!
Ich habe eine PowerPoint-Präsentation mit mehreren Folien. Es soll eine Navigationsleiste eingeblendet werden, für „ein Bild vor/zurück“ etc. gibt es ja einfache Funktionen. Allerdings soll es auch einen „Play“ und „Pause“-Button geben. Der Play-Button zeigt die einzelnen Folien der Reihe nach in einer Schleife an (pro Folie z.B. 60 Sek). Der „Pause“-Button stoppt dieses automatische weiterblättern. Ich habe einiges ausprobiert, kenne mich allerdings leider wenig mit PowerPoint und Makros aus…

Mein bisheriger Versuch für die Anfänge einer Play-Funktion (leider geht da gar nichts):


Sub play()
Set prsThis = ActivePresentation
intFolienanzahl = prsThis.Slides.Count
While 1 = 1
For i = 1 To intFolienanzahl
WarteZeit = Timer + 30
While WarteZeit > Timer
DoEvents
Loop
Wend
prsThis.SlideShowWindows(Index:=1).View.Next
End
Wend
End Sub

Bin für jede Hilfe dankbar!
mfG Seb

Hallo Sebastian!

Ja, ja, die Leute die noch kurz vor Mitternacht arbeiten (Sebastian, 24.9.2003
00:01) *g*.

Ich habe eine PowerPoint-Präsentation mit mehreren Folien. Es
soll eine Navigationsleiste eingeblendet werden, für „ein Bild
vor/zurück“ etc. gibt es ja einfache Funktionen. Allerdings
soll es auch einen „Play“ und „Pause“-Button geben. Der
Play-Button zeigt die einzelnen Folien der Reihe nach in einer
Schleife an (pro Folie z.B. 60 Sek). Der „Pause“-Button stoppt
dieses automatische weiterblättern. Ich habe einiges
ausprobiert, kenne mich allerdings leider wenig mit PowerPoint
und Makros aus…

Mein bisheriger Versuch für die Anfänge einer Play-Funktion
(leider geht da gar nichts):

Ohne Ausnahmebehandlung des Timers, der sich ja um 0:00 Uhr zurückstellt, wird Dir
die Play-Funktion immer um Mitternacht in der While-Wend-Schleife hängenbleiben…

IMHO müsste dies hier funktionieren (aber warum so schwierig - siehe unten):

Sub play()
Set prsThis = ActivePresentation
intFolienanzahl = prsThis.Slides.Count
' Verzoegerung in Sekunden bestimmen
lngWartezeit = 30
lngFortsetzen = 0
 While
 For i = 1 To intFolienanzahl
 lngFortsetzen = Timer + lngWartezeit
 ' sicherstellen, dass sich die Praes. um Mitternacht nicht aufhaengt
 if lngFortsetzen \>= (86400 - lngWartezeit) then
 lngFortsetzen = 86400 - Timer + lngWartezeit
 end if
 While WarteZeit \> Timer
 DoEvents
 Loop
 Wend
 prsThis.SlideShowWindows(Index:=1).View.Next
 End
 Wend
End Sub 

Bleibt jetzt nur noch die Frage: Warum baust Du „Deine eigene“ Lösung für eine
Play/Pause-Funktion, die Du auch über Buttons/Aktionseinstellungen realisieren
kannst?

Statt der PPT-typischen Schaltflächen kannst Du auch beliebige andere Objekte
(Kästchen, Dreiecke, transparente Objekte bis hin zu importierten Bitmaps…) mit
einer Aktionseinstellung „Gehe zu…“ versehen. – Der Pause-Button könnte auf
dieselbige Seite verweisen, wenn Dir die Übergangseffekte nichts ausmachen.

Ich würde so vorgehen (für die fertigen Folien…):

  • Menü: Ansicht > Foliensortierung
    – dort alle Folien markieren, Menü: Bildschirmpräsentation > Folienübergang auswählen…
    (Nächste Folie / ohne Übergang – bei Mausklick und Automatisch nach …30 Sekunden)
  • Auf jeder Folie schöne Designer-Buttons einfügen
  • jeden dieser Buttons mit einer Funktion belegen:
    – Menü: Bildschirmpräsentation > Aktionseinstellungen… Hyperlink zu…
    vorheriger/nächster Folie bzw. Pause-Button direkt auf dieselbe Folie verlinken.
  • zuletzt unter Bildschirmpräsentation einrichten… bestimmen, dass sie wiederholt wird, bis dass ESC gedrückt wird
    Fertig, oder?

[Wenn M$ nicht wieder alles geändert hat:] Schau Dir x unter Extras > „PowerPoint Zentral“ an. Die Datei (*.pps) findest Du unterhalb
des Office-Programm-Ordners als PZENTRAL.PPS. Mach Dir eine Kopie in einen anderen Ordner, setze das Read-Only-Attribut im Dateimanager zurück (Alt+Enter) und ziehe dann die *.PPS-Datei in das bereits geöffnete PowerPoint-Programm. Dann kannst Du darin arbeiten wie Du willst… :wink:

Bin für jede Hilfe dankbar!

Hoffe, es hilft…

CU DannyFox64