Con el fin de utilizar el evento SlideShowBegin en Powerpoint, usted tiene que tener un módulo de clase configurado de la siguiente manera:Powerpoint VBA App_SlideShowBegin
Public WithEvents App As Application
Private Sub App_SlideShowBegin(ByVal Wn As SlideShowWindow)
MsgBox "SlideShowBegin"
End Sub
Luego, en el interior de un módulo que no hay clases, hay que crear una objeto de ese tipo y establecer la aplicación a la aplicación.
Dim X As New Class1
Sub InitializeApp()
Set X.App = Application
End Sub
Ahora, el único problema que tengo es, si no se ha llamado manualmente InitializeApp con el menú de macro en PowerPoint, los eventos no funcionan. Debe llamar a este sub antes de que se pueda invocar cualquier cosa al comienzo de una presentación de diapositivas, INCLUYENDO este sub.
¿Cómo puedo llamar a este sub antes de ejecutar mi powerpoint? ¿Hay una mejor manera de hacer esto?
EDIT:
He intentado usar Class_Initialize pero sólo se llama a una vez que se utilizó por primera vez o hacer una declaración como Dim X as Class1; X = new Class1
Normalmente los controladores de eventos se instalan como parte de un complemento, donde inicializa la clase en la subrutina Auto_Open, que siempre se ejecuta cuando se carga el complemento. Si desea incluir un controlador de eventos en una sola presentación, una forma de hacer que inicie es incluir una forma que, al pasar el mouse o al hacer clic, desencadena una macro, que se inserta en su controlador de eventos y va a la siguiente diapositiva. –
Podría publicar esto como una respuesta, ya que así es como voy a terminar haciéndolo. –
Hecho. Gracias por dejarme saber que funcionó. –