Powerpoint Animation Automation - PullRequest
       5

Powerpoint Animation Automation

0 голосов
/ 01 октября 2018

Я пытаюсь добавить несколько изображений (скажем, 3 изображения) на слайд, а затем установить эффекты анимации для каждого изображения с помощью VBA.Я хочу контролировать порядок анимации, а также тип анимации и продолжительность между каждой анимацией.Пожалуйста помоги.Ниже приведен код, который я написал.

    Set MainSlide = ActivePresentation.Slides(1)
    Set BG1 = MainSlide.Shapes.AddPicture("C:\Users\XXX\Desktop\Sandhya_PPT_Task\Picture1.png", msoFalse, msoTrue, 0, 0, 959.76, 540)
    Set BG2 = MainSlide.Shapes.AddPicture("C:\Users\XXX\Desktop\Sandhya_PPT_Task\Picture2.png", msoFalse, msoTrue, 0, 0, 959.76, 540)
    With BG2.AnimationSettings
        .EntryEffect = ppEffectFade
        .AnimationOrder = 1
        .AdvanceMode = ppAdvanceAfterPrevious
        .AdvanceTime = 0.5
    End With
    Set BG3 = MainSlide.Shapes.AddPicture("C:\Users\XXX\Desktop\Sandhya_PPT_Task\Picture3.png", msoFalse, msoTrue, 0, 90, 959.76, 429.84)
    With BG3.AnimationSettings
        .EntryEffect = ppEffectFade
        .AnimationOrder = 2
        .AdvanceMode = ppAdvanceAfterPrevious
        .AdvanceTime = 0.5
    End With
End Sub

Ответы [ 2 ]

0 голосов
/ 26 октября 2018

Вы (оба) используете устаревший код предыдущей версии 2002. Вам необходимо использовать более новый объект временной шкалы

Sub animate_Pics()
Dim Pic1 As Shape
Dim pic2 As Shape
Dim pic3 As Shape
Dim osld As Slide
Dim oeff As Effect
Set osld = ActivePresentation.Slides(1)
Set Pic1 = osld.Shapes.AddPicture("C:\Users\xx\Desktop\john1.jpg", msoFalse, msoTrue, 10, 10)
Pic1.Name = "John1"
Set pic2 = osld.Shapes.AddPicture("C:\Users\xx\Desktop\john2.jpg", msoFalse, msoTrue, 10, 10)
pic2.Name = "John2"
Set pic3 = osld.Shapes.AddPicture("C:\Users\xx\Desktop\john3.jpg", msoFalse, msoTrue, 10, 10)
pic3.Name = "John3"
Set oeff = osld.TimeLine.MainSequence.AddEffect(Pic1, msoAnimEffectFade, , msoAnimTriggerOnPageClick)
oeff.Timing.Duration = 2
Set oeff = osld.TimeLine.MainSequence.AddEffect(pic2, msoAnimEffectFade, , msoAnimTriggerOnPageClick)
oeff.Timing.Duration = 2
oeff.MoveTo 2
Set oeff = osld.TimeLine.MainSequence.AddEffect(pic3, msoAnimEffectFade, , msoAnimTriggerOnPageClick)
oeff.Timing.Duration = 2
oeff.MoveTo 3

End Sub

0 голосов
/ 05 октября 2018

Вы должны включить пример полного кода и убедиться, что вы используете опцию в явном виде.Предложите изменить .AdvanceMode на ppAdvanceOnTime.Например:

Option Explicit

Public Sub CreateAnimation()

    Dim MainSlide As Slide
    Dim BG1 As Shape
    Dim BG2 As Shape
    Dim BG3 As Shape

    Set MainSlide = ActivePresentation.Slides(1)
    Set BG1 = MainSlide.Shapes.AddPicture("C:\Users\XXX\Desktop\Sandhya_PPT_Task\Picture1.png", msoFalse, msoTrue, 0, 0, 959.76, 540)

    Set BG2 = MainSlide.Shapes.AddPicture("C:\Users\XXX\Desktop\Sandhya_PPT_Task\Picture2.png", msoFalse, msoTrue, 0, 0, 959.76, 540)
    With BG2.AnimationSettings
        .EntryEffect = ppEffectFade
        .AnimationOrder = 1
        .AdvanceMode = ppAdvanceOnTime
        .AdvanceTime = 0.5
    End With

    Set BG3 = MainSlide.Shapes.AddPicture("C:\Users\XXX\Desktop\Sandhya_PPT_Task\Picture3.png", msoFalse, msoTrue, 0, 90, 959.76, 429.84)
    With BG3.AnimationSettings
        .EntryEffect = ppEffectFade
        .AnimationOrder = 2
        .AdvanceMode = ppAdvanceOnTime
        .AdvanceTime = 0.5
    End With

End Sub
...