2012-04-27 33 views
6

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

+1

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. –

+0

Podría publicar esto como una respuesta, ya que así es como voy a terminar haciéndolo. –

+0

Hecho. Gracias por dejarme saber que funcionó. –

Respuesta

1

Por lo general, los controladores de eventos se instala como parte de un complemento, donde inicializaría 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.

+0

Eso está bien para la mayoría de los eventos que deben atraparse, pero ¿qué hay del evento SlideShowBegin? Deseo activar el código para que se ejecute tan pronto como comience la presentación de diapositivas, pero esta solución requiere que la presentación de diapositivas haya comenzado para activar el código que causa que los eventos sean reconocidos. Parece un Catch-22. – DRC

Cuestiones relacionadas