¿Cómo capturo un evento modificado de texto VSTO de PowerPoint?
-
08-07-2019 - |
Pregunta
Estoy desarrollando un complemento PowerPoint C # VSTO. Quiero poder capturar un evento de cambio de texto cada vez que se cambia el texto del Título de una diapositiva.
¿Cómo puedo adjuntar un controlador de eventos personalizado que se activará cada vez que se cambie el texto del Título?
Solución
Dos cosas: 1) esto está en VBA, pero debería ser fácilmente transportable a C # y VSTO, 2) El " texto cambió " La cosa es un poco complicada. Puedo llevarte tan lejos como '' estás en un cuadro de Título '' - El resto es más trival. Tiene que ver con encontrar el estado original versus cualquier cambio. Probablemente factible, simplemente no lo he hecho.
Para conectar un cambio de selección en PPT VBA, necesitará una clase y un módulo. En la clase, pon esto:
Public WithEvents PPTEvent As Application
Private Sub PPTEvent_WindowSelectionChange(ByVal Sel As Selection)
With Sel
If .Type = ppSelectionText Then
Dim sh As Shape: Set sh = .ShapeRange(1)
If sh.Type = msoPlaceholder Then
originalText = sh.TextFrame.Text
Dim placeHolderType As Integer
placeHolderType = sh.PlaceholderFormat.Type
If placeHolderType = ppPlaceholderTitle Then
MsgBox "this is a title placeholder"
End If
End If
End If
End With
End Sub
Nombre la clase " clsPPTEvents " ;. Luego, en cualquier módulo, coloque lo siguiente:
Public newPPTEvents As New clsPPTEvents
Sub StartEvents()
Set newPPTEvents.PPTEvent = Application
End Sub
Sub EndEvents()
Set newPPTEvents.PPTEvent = Nothing
Set newPPTEvents = Nothing
End Sub
Presione F5 en StartEvents y eso habilitará el enlace. Presione F5 en EndEvents para deshabilitarlo.