%3A%20establezca%20tiempos%20de%20diapositivas%20seg%C3%BAn%20la%20duraci%C3%B3n%20de%20la%20narraci%C3%B3n.png)
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:
- Seleccione el clip de audio en la diapositiva.
- 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.
- 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!