Eu fiz muito VBA, mas não com o PowerPoint, então não tenho a resposta completa.
No entanto, vejo que você está tentando detectar um evento de alteração de slide e restringir a ação apenas ao primeiro slide. Eu suspeito que o problema é que, na inicialização, o evento de alteração de slide não dispara. Assim, você nunca verá uma combinação de mudança de slide + primeiro slide, a menos que você volte do segundo para o primeiro slide. Obviamente, você pode provar isso facilmente indo até o 2º slide e depois retornando ao primeiro.
O evento que você deseja é chamado SlideShowBegin .
ATUALIZAÇÃO:
Colocar SlideShowBegin
para trabalhar é um pouco mais complexo que um sub simples, porque precisa referenciar a classe application
. No entanto, o seguinte funciona como você deseja.
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
Para usar o outro método, primeiro você precisa adicionar o seguinte em um módulo normal:
Opção
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
Em seguida, você precisa adicionar um módulo de classe (deve ser chamado de Class1 neste exemplo) com o seguinte:
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
Claramente, o primeiro exemplo é muito mais fácil de usar!
UPDATE 2:
Eu disse que não usei o VBA no PP! Descobri que o PP não tem um recurso de inicialização automática para o VBA, a menos que você acesse seu código de um suplemento. A maneira mais fácil de fazer as coisas funcionarem é mudar o seu código (no módulo comum e não no módulo de classe) para incluir uma linha para realmente iniciar a apresentação de slides.
Em seguida, chame essa macro da barra de ferramentas do desenvolvedor (ou crie sua própria barra de ferramentas com a macro nela) para que ela inicie a apresentação de slides e chame seu código.