
Estoy trabajando en una presentación de PowerPoint en la que necesito agregar información en la pantalla durante la presentación real, es decir, información proporcionada por los asistentes a la presentación.
Entonces agregué un cuadro de texto desde la pestaña Desarrollador y puedo ingresar datos durante la presentación. Ningún problema.
Pero, ¿puedo entonces mantener los datos que ingresé cuando hago clic en una nueva diapositiva?
Cuando paso a la siguiente diapositiva, la información que ingresé desaparece. ¿Hay alguna manera de mantenerlo en las diapositivas que vienen después?
Gracias de antemano.
Respuesta1
La información no desaparece como tal; seguirá ahí cuando regreses a la diapositiva donde la ingresaste originalmente. Simplemente no aparecerá automáticamente en un cuadro de texto ActiveX en otras diapositivas.
El evento Lost Focus del cuadro de texto se activará cuando pase de una diapositiva a la siguiente, por lo que parte del código en el evento Lost Focus podría examinar cada diapositiva de la presentación, acumular cualquier texto en cualquier control del cuadro de texto y luego crear el texto en cada El cuadro de texto coincide con el texto acumulado.
Esto no es perfecto, pero si quieres intentarlo, es un comienzo. Aplique este código al evento LostFocus de cada control. Para obtener más ayuda, publique preguntas en StackOverflow con etiquetas de Powerpoint y VBA en lugar de aquí:
Private Sub TextBox1_LostFocus()
Dim oSl As Slide
Dim oSh As Shape
Dim sText As String
On Error Resume Next
' Accumulate text from all ActiveX text boxes
For Each oSl In ActivePresentation.Slides
For Each oSh In oSl.Shapes
If oSh.Type = msoOLEControlObject Then
sText = sText & oSh.OLEFormat.Object.Text
End If
Next
Next
' Apply the accumulated text
For Each oSl In ActivePresentation.Slides
For Each oSh In oSl.Shapes
If oSh.Type = msoOLEControlObject Then
oSh.OLEFormat.Object.Text = sText
End If
Next
Next
End Sub