PowerPoint 2013 (6): establezca tiempos de diapositivas según la duración de la narración

PowerPoint 2013 (6): establezca tiempos de diapositivas según la duración de la narración

accidentalmente corríBorrar tiempos en todas las diapositivascomando y perdió todos los tiempos de diapositivas. Sin embargo, cada diapositiva de mi presentación tiene narraciones. ¿Existe una forma GUI/VBA de establecer tiempos de diapositivas para la duración de la narración de todas las diapositivas?

Gracias.

Respuesta1

Desarrollé una solución temporal:

  1. Seleccione el clip de audio en la diapositiva.
  2. BajoHerramientas de audio, sobre elReproducciónpestaña, haga clicRecortar audio. Tenga en cuenta la duración total de la reproducción, consulte la esquina superior derecha.
  3. Ajustar manualmenteAjustarsincronización de diapositivas en elTransicionespestaña, en laMomentogrupo, bajoDiapositiva avanzada, enDespuéscuadro de entrada.

El flujo de trabajo funciona pero es manual y, por tanto, laborioso.

¿Conoce alguna forma de leer la duración total de la reproducción de audio a través de VBA?

Respuesta2

Aquí hay un poco de VBA que le dará la duración total de los sonidos en su presentación (y en el camino, devuelve el sonido para cada uno... puede modificar el código si necesita dividirlo):

Sub SumSoundLengths()

    Dim oSh As Shape
    Dim oSl As Slide
    Dim sngLengthOfSound As Single
    Dim sngSoundDuration As Single
    
    For Each oSl In ActivePresentation.Slides
        For Each oSh In oSl.Shapes
        If oSh.Type = msoMedia Then
            If oSh.MediaType = ppMediaTypeSound Then
                With oSh
                    sngLengthOfSound = .MediaFormat.Length
                    sngSoundDuration = sngSoundDuration + sngLengthOfSound
                End With
            End If
        End If
        Next
    Next
    
    MsgBox "Sounds total to: " & CStr(sngSoundDuration)
    
End Sub

Respuesta3

Aquí hay un guión que se me ocurrió, basado en la respuesta de Steve aquí. Me encontré con un problema con la variable de transición de diapositiva que excedía un límite aparentemente arbitrario de 86,4 por alguna razón. Si cambia ese número y no le da un error, no dude en eliminarlo por completo.

Sub SetTransitionTimings()

      Dim shapeObj As Shape
      Dim slideObj As Slide
      Dim sngLengthOfSound As Single
      Dim slideDuration As Single

      For Each slideObj In ActivePresentation.Slides

              slideDuration = 0

              For Each shapeObj In slideObj.Shapes

                              If shapeObj.Type = msoMedia Then
                                             If shapeObj.MediaType = ppMediaTypeSound Then
                                                            With shapeObj
                                                                    .AnimationSettings.PlaySettings.PlayOnEntry = msoTrue
                                                                    sngLengthOfSound = .MediaFormat.Length / 1000
                                                                    slideDuration = slideDuration + sngLengthOfSound
                                                            End With
                                             End If
                              End If

              Next

              If slideDuration = 0 Then
                              slideDuration = 5
              End If

              If slideDuration < 86.4 Then
                            With slideObj.SlideShowTransition
                                    .AdvanceOnTime = msoTrue
                                    .Duration = 1
                                    .AdvanceTime = slideDuration
                            End With
              Else
                            Debug.Print "Slide " & slideObj.SlideNumber & ": " & slideDuration
              End If

      Next

      MsgBox "Transition timings set."

End Sub

Respuesta4

Sólo quería señalar que la última versión de PowerPoint parece tener un error que causa estragos en los tiempos. Aparentemente, en la opción de cinta TRANSICIONES, la opción "Avanzar diapositiva después de XXX segundos" está marcada automáticamente de forma predeterminada. Si edita alguna transición y NO desmarca esto, todos sus tiempos se borran y se reemplazan con el número que se muestra en la opción de cinta.

He pasado días tratando de arreglar presentaciones a las que se les borraron los tiempos de narración, llegando incluso a volver a grabar narraciones (sin alegría) y luego recurrir a tomar capturas de pantalla, ejecutar la presentación completa manualmente y luego convertirla a video. Fue la solución anterior de Jon G la que solucionó este problema, en aproximadamente 25 segundos.

¡Gracias Jon!

información relacionada