PowerPoint에서 슬라이드가 변경될 때 이벤트가 발생하도록 하려면 어떻게 해야 하나요?

PowerPoint에서 슬라이드가 변경될 때 이벤트가 발생하도록 하려면 어떻게 해야 하나요?

나는 이미 두 가지 수정 사항을 알고 있는데, 그 수정 사항이 나에게 적합하지 않은 이유와 함께 아래에 나열하겠습니다.

첫 번째는 서브루틴을 사용하는 것입니다 SlideShowNextSlide. 문제는 전환 전에 이벤트를 시작하므로 어떤 슬라이드로 전환되는지 알 수 없다는 것입니다. 프레젠테이션 중에 특정 슬라이드를 떠나지 않고 특정 슬라이드에 들어갈 때 이벤트가 시작되기를 원합니다. CurrentShowPosition반드시 다음 슬라이드로 진행할 필요는 없기 때문에 단순히 필드에 하나를 추가할 수는 없습니다 . 하이퍼링크를 클릭할 수도 있습니다. 간단히 말해서, 나는 이벤트를 발생시키고 싶습니다.일부현재 슬라이드에서 전환되지만 SlideShowNextSlide이벤트를 실행하기 위해 올바른 슬라이드로 이동하는지 알 수 있는 방법이 없습니다.

두 번째는 서브루틴을 사용하는 것입니다 OnSlideShowPageChange. 문제는 이미 PowerPoint 슬라이드 쇼를 한 번 저장하고 닫았다가 다시 열었기 때문에 PowerPoint가 서브루틴의 코드를 무시하기로 결정했다는 것입니다.

내가 할 수 있는 일에 대해 제안할 사람이 있나요? 앞서 언급한 문제 중 하나를 해결하는 방법이 있을까요? 저는 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

나는 필요한 슬라이드에 있는지 확인한 SlideIndex다음 다음을 실행합니다.If Condition

관련 정보