Я много работал с VBA, но не с PowerPoint, поэтому у меня нет полного ответа.
Однако я вижу, что вы пытаетесь обнаружить событие смены слайдов, а затем ограничиваете действие только первым слайдом. Я подозреваю, что проблема в том, что при запуске событие смены слайдов не срабатывает. таким образом, вы никогда не увидите комбинацию смены слайдов + первого слайда, если вы не переместитесь назад со второго на первый слайд. Очевидно, что вы можете легко доказать это, перейдя на второй слайд и затем вернувшись к первому.
Событие, которое вы хотите, называется SlideShowBegin.
ОБНОВЛЕНИЕ: заставить SlideShowBegin
работать немного сложнее, чем простая подпрограмма, потому что она должна ссылаться на класс application
. Однако следующее работает так, как вы хотите.
Sub OnSlideShowPageChange()
Dim i As Integer
i = ActivePresentation.SlideShowWindow.View.CurrentShowPosition
If i <> 1 Then Exit Sub
' Insert any code you want activated on slide 1 after here
MsgBox "This is slide 1"
End Sub
Чтобы использовать другой метод, вам нужно сначала добавить следующее в обычный модуль:
вариант
Option Explicit
' Class1 is the name of the class module you create
Dim X As New Class1
Sub InitializeApp()
Set X.App = Application
End Sub
Затем вам нужно добавить модуль класса (в этом примере он должен называться Class1) со следующим:
Option Explicit
Public WithEvents App As Application
Private Sub App_SlideShowBegin(ByVal Wn As SlideShowWindow)
Dim argh As Double
Debug.Print "Slideshow started"
argh = Shell("D:\test.bat", vbNormalFocus)
End Sub
Очевидно, что первый пример намного проще в использовании!
ОБНОВЛЕНИЕ 2:
Я сказал, что я не использовал VBA в PP! Я обнаружил, что PP не имеет возможности автозапуска для VBA, если вы не используете свой код из надстройки. Самый простой способ заставить вещи работать - это изменить код (в обычном модуле, а не в модуле класса), чтобы включить строку для фактического запуска слайд-шоу.
Затем вызовите этот макрос с панели инструментов разработчика (или создайте свою собственную панель инструментов с макросом на нем), чтобы он запустил слайд-шоу и вызвал ваш код.