Экспорт PowerPoint в mp4 с помощью скрипта с динамической продолжительностью слайда

#export #powerpoint #mp4 #duration

#экспорт #powerpoint #МР4 #Продолжительность

Вопрос:

Я хочу экспортировать много презентаций PowerPoint в формат mpeg4. С помощью существующих функций в Powerpoint я могу установить продолжительность для каждого слайда или использовать расписание. Чтобы составить это расписание, я должен щелкнуть презентацию и записать свои клики или, в качестве альтернативы, установить время для каждого слайда и анимации, что требует много работы.

Могу ли я каким-либо образом создать скрипт, в котором я могу определить продолжительность щелчка мыши? Я хочу, чтобы слайд без анимации отображался в течение 3 секунд, а слайд, например, с двумя анимациями, отображался в течение 9 секунд (слайд анимация1 анимация2).

Я не хочу указывать длительность отображения, а вид продолжительности нажатия…

Кто-нибудь имеет представление о том, возможно ли что-то подобное?

Ответ №1:

Вот скрипт VBA для установки параметра «Опережение по времени» для каждого слайда в зависимости от количества анимаций, присутствующих на слайде.

 For Each sld In ActivePresentation.Slides
    animationCount = sld.TimeLine.MainSequence.Count
    sld.SlideShowTransition.AdvanceOnTime = msoTrue
    sld.SlideShowTransition.AdvanceTime = animationCount * 3   3
Next

ActivePresentation.CreateVideo "C:SomePathFilename.mp4", True
  

В этом примере, если на слайде есть анимации, с помощью этой строки мы устанавливаем время, равное 3-кратному количеству анимаций плюс 3, как в вашем примере. Если у нас есть слайд с 2 анимациями, длительность «Заранее по времени» будет установлена на 2*3 3 =9 секунд. Измените это в зависимости от ваших потребностей.

         sld.SlideShowTransition.AdvanceTime = animationCount * 3   3
  

Последняя строка позволяет экспортировать в видео с таймингами.

Вот еще один пример, в котором вы можете указать параметр «Без анимации», чтобы не устанавливать опережение по времени, но при желании указать длительность по умолчанию:

 For Each sld In ActivePresentation.Slides
    animationCount = sld.TimeLine.MainSequence.Count
    If animationCount >= 1 Then
        sld.SlideShowTransition.AdvanceOnTime = msoTrue
        sld.SlideShowTransition.AdvanceTime = animationCount * 3   3
    Else
        sld.SlideShowTransition.AdvanceOnTime = msoFalse
    End If
Next

ActivePresentation.CreateVideo "C:SomePathFilename.mp4", True, 3
  

(если вы не знакомы с VBA, мы можем найти некоторую документацию и учебные пособия)

Комментарии:

1. Работает как шарм. К сожалению, есть некоторые защищенные презентации, в которых мне не разрешено создавать макросы. Тем не менее, это мне очень помогает. Большое вам спасибо!

2. Если вы сохраните это в презентации с поддержкой макросов, вы сможете выполнить его на всех открытых других презентациях с помощью Presentations collection, For Each pres In Presentations что позволит вам получить доступ к другим презентациям, тогда вы, возможно, сможете изменить их, если они не доступны только для чтения. Просто еще один совет, который может вам помочь 🙂