Cuadros de texto durante presentaciones de PowerPoint

Cuadros de texto durante presentaciones de PowerPoint

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

información relacionada