Как запустить макрос «OnEnterSlide» или «OnLeaveSlide» в Powerpoint VBA? - PullRequest
7 голосов
/ 05 июня 2010

Существует ли какое-либо событие, которое позволяет запускать макрос в любое время, когда вы входите в слайд или покидаете слайд?

Ответы [ 2 ]

6 голосов
/ 05 июня 2010

SlideShowNextSlide или OnSlideShowPageChange

Полный список вы можете найти на http://officeone.mvps.org/vba/events_version.html

Пример кода от http://msdn.microsoft.com/en-us/library/aa211571%28office.11%29.aspx


Этот пример определяет положение слайда для слайда, следующего за Событие SlideShowNextSlide.

Если следующим слайдом является слайд три, пример изменится тип указателя на ручку и цвет ручки на красный.

Private Sub App_SlideShowNextSlide(ByVal Wn As SlideShowWindow)

Dim Showpos As Integer

Showpos = Wn.View.CurrentShowPosition + 1


 If Showpos = 3 Then  
     With ActivePresentation.SlideShowSettings.Run.View
        .PointerColor.RGB = RGB(255, 0, 0)
        .PointerType = ppSlideShowPointerPen
     End With
  Else
     With ActivePresentation.SlideShowSettings.Run.View
        .PointerColor.RGB = RGB(0, 0, 0)
        .PointerType = ppSlideShowPointerArrow
     End With
  End If
End Sub
0 голосов
/ 26 февраля 2016

Я хотел бы добавить, что использование события действительно зависит от версии PowerPoint. Для меня (PP 2007) следующее событие работает достаточно стабильно:

Sub OnSlideShowPageChange(ByVal objWindow As SlideShowWindow)
   Debug.Print objWindow.View.Slide.SlideIndex ' you can use this to check which slide invokes the event
End Sub

Этот код не нуждается в дополнительных структурах классов (PPTEvent). Но если вы планируете использовать другие события, хорошей идеей будет поместить инициализацию этого класса в OnSlideShowPageChange .

Обратите внимание, что этот код справляется с первой частью данной задачи - вводом слайда. Вы можете спросить «А как насчет его ухода?». Ну, это вопрос относительности. То, что вводит для одного слайда, в то же время , оставляя для другого. Просто используйте objWindow.View.Slide.SlideIndex , чтобы отследить текущий слайд, сравнить его с индексом предыдущего слайда и решить, оставили ли вы только что нужный.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...