PowerPoint でスライドが変更されたときにイベントを発生させるにはどうすればよいですか?

PowerPoint でスライドが変更されたときにイベントを発生させるにはどうすればよいですか?

私はすでに 2 つの修正方法を知っています。以下に、それらが機能しない理由とともにリストします。

1 つ目はSlideShowNextSlideサブルーチンを使用する方法です。これの問題は、遷移の前にイベントが起動されるため、どのスライドに遷移するかを知る方法がないことです。プレゼンテーション中に特定のスライドに入るときにイベントが起動するようにしたいのですが、特定のスライドを離れるときには起動させたくないのです。次のスライドに進むとは限らないので、フィールドにイベントを追加するだけCurrentShowPositionでは不十分です。ハイパーリンクをクリックするかもしれません。つまり、次のスライドに進むときにのみイベントを起動したいのです。いくつかの現在のスライドから遷移しますが、SlideShowNextSlideイベントを起動するために適切なスライドに移動しているかどうかを知る方法がありません。

2 つ目は、サブルーチンを使用することですOnSlideShowPageChange。これの問題は、PowerPoint スライド ショーをすでに 1 回保存し、閉じて再度開いているため、PowerPoint がサブルーチン内のコードを無視してしまうことです。

私に何ができるかについて、何かアドバイスはありますか? 前述の問題の 1 つを修正する方法はありますか? Windows 8.1 で PowerPoint 2013 を使用しています。

使用したいコードは次のとおりです。

Private Sub EventHandler_SlideShowNextSlide(ByVal SSW As SlideShowWindow)
' The purpose here is to stop music playing in the background, which happens on certain slides.
' For my purposes, it's not enough to simply state how many slides to play the music over,
' because some slides that need the music stopped can occur before slides that need it playing.
Dim Change As Boolean
If SSW.View.CurrentShowPosition < 66 And ((SSW.View.CurrentShowPosition < 42 And SSW.View.CurrentShowPosition > 25) Or SSW.View.CurrentShowPosition Mod 2 = 0) _
Then
    ActivePresentation.Slides(1).Shapes("music file.mp3").Delete
    Change = True
End If
If Change Then Application.CommandBars.ExecuteMso "Undo"
End Sub

答え1

Dim CS As Slide
Set CS = ActivePresentation.SlideShowWindow.View.Slide

If CS.SlideIndex < 66 And CS.SlideIndex > 25 Then
'''
End If

必要なスライドにいるかどうかを確認してからSlideIndexIf Condition

関連情報