%3A%20Foliendauer%20an%20Erz%C3%A4hldauer%20anpassen.png)
Ich bin versehentlich geranntKlare Zeitangaben auf allen FolienBefehl und alle Folienzeiten verloren. Jede Folie meiner Präsentation hat jedoch einen Kommentar. Gibt es eine GUI/VBA-Methode, um die Folienzeiten für alle Folien auf die Dauer des Kommentars einzustellen?
Danke schön.
Antwort1
Ich habe eine vorübergehende Problemumgehung entwickelt:
- Wählen Sie den Audioclip auf der Folie aus.
- UnterAudio-Tools, auf derWiedergabeaufAudio zuschneiden. Die Gesamtwiedergabedauer finden Sie in der oberen rechten Ecke.
- Manuell anpassenAnpassenSchieben Sie das Timing auf derÜbergängein der RegisterkarteZeitliche KoordinierungGruppe, unterVorwärtsfolie, InNachEingabefeld.
Der Workflow funktioniert, ist jedoch manuell und daher mühsam.
Kennen Sie eine Möglichkeit, die Gesamtdauer der Audiowiedergabe über VBA zu lesen?
Antwort2
Hier ist ein bisschen VBA, das Ihnen die Gesamtlänge der Sounds in Ihrer Präsentation anzeigt (und nebenbei den Sound für jeden zurückgibt ... Sie können den Code ändern, wenn Sie das aufteilen müssen):
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
Antwort3
Hier ist ein Skript, das ich mir basierend auf Steves Antwort hier ausgedacht habe. Ich hatte ein Problem mit der Folienübergangsvariable, die aus irgendeinem Grund eine scheinbar willkürliche Grenze von 86,4 überschritt. Wenn Sie diese Zahl ändern und kein Fehler auftritt, können Sie sie gerne ganz entfernen.
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
Antwort4
Ich wollte nur darauf hinweisen, dass die neueste Version von PowerPoint anscheinend einen Fehler hat, der die Zeitangaben durcheinander bringt. Anscheinend ist unter der Menübandoption ÜBERGÄNGE die Option „Folie nach XXX Sekunden weiterschalten“ standardmäßig automatisch aktiviert. Wenn Sie Übergänge bearbeiten und diese Option NICHT deaktivieren, werden alle Ihre Zeitangaben gelöscht und durch die in der Menübandoption angezeigte Zahl ersetzt.
Ich habe Tage damit verbracht, Präsentationen zu reparieren, deren Erzählzeiten gelöscht waren. Ich bin sogar so weit gegangen, die Erzählungen neu aufzunehmen (kein Erfolg) und dann selbst Screenshots zu machen, während ich die gesamte Präsentation manuell abspielte und sie dann in ein Video umwandelte. Es war die oben genannte Lösung von Jon G, die das Problem in nur etwa 25 Sekunden behoben hat.
Danke, Jon!