VBA PowerPoint イベント で検索すると、いろいろなページがヒットします。
今回は、下記公式の
Application オブジェクトでイベントを使用する
https://docs.microsoft.com/ja-jp/office/vba/powerpoint/how-to/use-events-with-the-application-object
を見ながら、テストしていきます。
下記、いつものテスト動画です
www.youtube.com
https://www.youtube.com/watch?v=E837vhWZ09g
スライドショー開始のイベント
スライド終了のイベントにコードを書きたい
ので、
クラスモジュールに EventClassModule とClass1から変更して名称を付けました
タイミング確認のMsgBoxは不要なので取り除いてください
下記のコードを クラスモジュール EventClassModule と名称を付けます。
Option Explicit Public WithEvents App As Application Private Sub App_SlideShowBegin(ByVal Wn As SlideShowWindow) MsgBox "スライド開始、おちついて" 'ここに時計スタートのコードを書くと良いのでは? Debug.Print "スライド開始" & Now End Sub Private Sub App_SlideShowEnd(ByVal Pres As Presentation) Debug.Print "スライドEnd" & Now '終了のタイミング MsgBox "終了、おつかれさまでした" End Sub 'SlideShowNextClick こんなイベントもあったりします Private Sub App_SlideShowNextClick(ByVal Wn As SlideShowWindow, ByVal nEffect As Effect) Debug.Print "次がおされた" & Now MsgBox "次のスライドです" End Sub
でイベントがとれると思います。
イベントにコードを書いたら、次は、
標準モジュールに
Option Explicit Dim X As New EventClassModule Sub InitializeApp() Set X.App = Application End Sub Sub スライド開始() Set X.App = Application 'イベントを拾えるように定義 ActivePresentation.SlideShowSettings.Run 'スライドショー開始 End Sub
などで、クラスモジュールに書いたイベントが走るようにします。
そんな手順を下記で動画にしています※冒頭と同じ動画です
https://www.youtube.com/watch?v=E837vhWZ09g
公式の
Application オブジェクトでイベントを使用する
https://docs.microsoft.com/ja-jp/office/vba/powerpoint/how-to/use-events-with-the-application-object
をみるのが一番だと思いますが、
処理の参考となれば幸いです。