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
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
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.
Danke Euch beiden,
und ich werde es gleich mal probieren.
@ 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.
könntest du evtl. diese dir mal anschauen
Ich danke schon mal für deine Zeit !!!
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
@ 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