Textfeld während Präsentation aktuell halten
#1
Hallo 

ich habe mir ein Textfeld mit Datum und Uhrzeit in eine Folie eingebaut über den Reiter Einfügen und dann Datum Uhrzeit.

Die Uhrzeit aktualisiert leider nicht während der Präsentation sondern nur bei Start der Präsentation.

Nun die Frage ob es da auch eine Makro Lösung gibt?

Es wäre super wenn jemand eine Idee oder Lösung hat wie immer die aktuelle Uhrzeit auf dieser Folie ist da die PP nur 2 Folien beinhaltet,
und 8 Stunden in schleife läuft.

Danke Euch
Antworten Top
#2
Hallo,

das grundsätzliche Problem mit der automatischen Ausführung von Makros und dem Reagieren von Events, habe ich in diesem Beitrag mal dargestellt: VBA - wie Code bei Folienaufruf ausführen? (clever-excel-forum.de)
(Kurzfassung: Du musst Makros manuell starten, damit du auf Events reagieren kannst.)

Prinzipiell ist dein Vorhaben aber recht einfach zu handhaben. Du benötigst nur eine Klasse (Ich hab sie EventHandler genannt), die die Application-Events abhandelt. Darin enthalten eine einfache Prozedur, die den Inhalt einer Shape (hier UhrzeitBox) auf einer bestimmten Folie (hier 2) ändert. Reagiert wird dabei auf das SlideShowNextSlide-Event, über die .View-Eigenschaft des übergebenen SlideShowWindow-Objekts kannst du auf die angezeigte Folie reagieren. Im Initialize-Event wird einmalig die Application registriert und die Zeit erstmalig aktualisiert.
Code:
Option Explicit

Private WithEvents Appi As Application

Private Sub Appi_SlideShowNextSlide(ByVal Wn As SlideShowWindow)
    With Wn.View.Slide
        If .SlideIndex = 2 Then updateTime
    End With
End Sub

Private Sub Class_Initialize()
    Set Appi = Application
    updateTime
End Sub

Sub updateTime()
    ActivePresentation.Slides(2).Shapes("UhrzeitBox").TextFrame2.TextRange.Text = Format(Now(), "DD. MMMM YYYY hh:nn:ss")
End Sub


Wie im Link beschrieben, kann die Klasse nix, bis du ein Objekt aus der Klasse instanziert hast. Das kannst du beispielsweise in einem allgemeinen Modul tun:
Code:
Option Explicit

Private myEventHandler As EventHandler

Sub starten()
    Set myEventHandler = New EventHandler
End Sub

Sub stoppen()
    Set myEventHandler = Nothing
End Sub

Das Starten-Makro musst du händisch ausführen, bevor du die präsentation startest (alternativ kannst du dir natürlich auch einen Button auf die erste Folie legen, die das Starten-Makro einmalig ausführt.)

Viele Grüße
derHöpp
[-] Folgende(r) 1 Nutzer sagt Danke an derHoepp für diesen Beitrag:
  • kingkong
Antworten Top
#3
Ja, es ist möglich ein Makro zu erstellen, um die Uhrzeit in einer PowerPoint-Folie aktualisieren zu lassen. Eine Möglichkeit wäre, ein Makro zu erstellen, das die Uhrzeit in einem bestimmten Intervall aktualisiert, z.B. alle 30 Sekunden.

Eine Anleitung, wie man das macht, finden Sie hier:

Öffnen Sie Ihre PowerPoint-Präsentation
Klicken Sie auf die Registerkarte "Entwicklertools"
Klicken Sie auf "Visual Basic"
Klicken Sie in der Menüleiste auf "Einfügen" und dann auf "Modul"
Fügen Sie den folgenden Code in das Modulfenster ein:
Zitat:Sub UpdateTime()
ActiveWindow.View.Slide.Shapes("Uhrzeit").TextFrame.TextRange.Text = Time
End Sub


Klicken Sie auf "Einfügen" und dann auf "Timer"
Fügen Sie den folgenden Code in das Timer-Fenster ein:
Zitat:Sub Timer()
UpdateTime
Application.OnTime Now + TimeValue("00:00:30"), "Timer"
End Sub


Klicken Sie auf "Start"
Dieses Makro aktualisiert die Uhrzeit in dem Textfeld, das Sie "Uhrzeit" genannt haben, alle 30 Sekunden. Sie können das Intervall anpassen, indem Sie die Zeit in der "Application.OnTime"-Zeile ändern.
[-] Folgende(r) 1 Nutzer sagt Danke an Kronos für diesen Beitrag:
  • kingkong
Antworten Top
#4
Danke Euch beiden,

und ich werde es gleich mal probieren.
Antworten Top
#5
Sad 
@ derHoepp

habe deinen Vorschlag mal probiert,

aber wenn ich das starten Makro ausführe bekomme ich eine Fehlermeldung mit der ich gar nix anfangen kann. Huh

könntest du evtl. diese dir mal anschauen

Ich danke schon mal für deine Zeit !!!


Angehängte Dateien
.pptm   derHoepp.pptm (Größe: 42,38 KB / Downloads: 2)
Antworten Top
#6
Hi,

du musst die Klasse auch so benennen, wie du sie nutzt, also statt Klasse1 EventHandler. Zusätzlich würde ich dir empfehlen, die Modulvariable nicht so zu benennen, wie die Klasse. Also lieber Private mEventHandler As EventHandler.

Zudem wirst du ein Problem bekommen, wenn das Programm läuft, da du kein Shape mit dem Namen "UhrzeitBox" auf deiner Slide hast.

Viele Grüße
derHöpp
[-] Folgende(r) 1 Nutzer sagt Danke an derHoepp für diesen Beitrag:
  • kingkong
Antworten Top
#7
@ derHoepp

Danke für deine Hilfe

es funktioniert wunderbar nach dem ich alles geändert habe.

Ich wusste bis vorhin nicht was ein Klassenmodul ist aber da werde ich mal googlen.

Danke Dir und schönen Sonntag noch gewünscht !!!

Gruß kingkong
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste