C'è qualche tipo di evento che consente di eseguire una macro ogni volta che si entra in una diapositiva o si lascia una diapositiva?Come eseguire una macro "OnEnterSlide" o "OnLeaveSlide" in Powerpoint VBA?
risposta
SlideShowNextSlide o OnSlideShowPageChange
È possibile trovare l'elenco completo a http://officeone.mvps.org/vba/events_version.html
Esempio di codice da http://msdn.microsoft.com/en-us/library/aa211571%28office.11%29.aspx
Questo esempio determina la posizione della slitta per la diapositiva dopo l'evento SlideShowNextSlide.
Se la diapositiva successiva è la diapositiva tre, l'esempio cambia il tipo di puntatore a una penna e il colore della penna a rosso.
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
vorrei aggiungere che evento di utilizzare realmente dipende dalla versione di PowerPoint. Per me (PP 2007) il prossimo evento funziona abbastanza stabile:
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
Questo codice non ha bisogno di strutture di classe supplementari (PPTEvent). Ma se prevedi di utilizzare altri eventi è una buona idea mettere l'inizializzazione di questa classe in OnSlideShowPageChange.
Si prega di notare che questo codice fa fronte alla prima parte dell'attività assegnata - inserendo la diapositiva. Si potrebbe chiedere "E la sua partenza?". Bene, questa è una questione di relatività. Cosa è immettendo per una diapositiva è allo stesso tempo lasciando per un altro. Usa semplicemente objWindow.View.Slide.SlideIndex per tracciare la diapositiva attuale, confrontarla con l'indice della diapositiva precedente e decidere se hai appena lasciato quella desiderata.
Questo è solo per entrare. Non so se c'è un evento in "partenza" –
Provo ad attivarlo eseguendo questo http://stackoverflow.com/questions/2979950/how-to-automatically-trigger-the-app-object-initialization -in-powerpoint nella finestra di esecuzione ma non sembra funzionare. Ho sbagliato qualcosa? – user310291
Risposto nell'altra domanda –