PowerPoint VBA: как установить для события «Запуск анимации» значение «С предыдущим» - PullRequest
1 голос
/ 02 декабря 2019

В макросе PowerPoint я хочу установить «Пуск» в группе «Время» на вкладке «Анимация» на «С предыдущим». Сегодня я впервые с VBA, поэтому, пожалуйста, не смейтесь над моим кодом:

Sub AdjustAll () Dim osld As Slide Dim oshp As Shape

For Each osld In ActivePresentation.Slides
    For Each oshp In osld.Shapes
        If oshp.Type = msoMedia Then
            If oshp.MediaType = ppMediaTypeSound Then
                oshp.Left = 460.7499
                oshp.Top = 250.7499
                oshp.AnimationSettings.PlaySettings.LoopUntilStopped = True
            End If
        End If
    Next oshp
Next osld

End Sub

Может быть, мне нужно использовать AddEffect (), но это кажется слишком сложным? Я видел несколько документов и сообщений, но не нашел свойства, которое нужно установить, или значение, которое нужно применить.

Я не хочу задавать несколько вопросов, но если кто-то может помочь в дальнейшем или сказать мне, где RTFMдля другого объекта я хотел бы установить то же самое на «По щелчку», а также установить «Появиться» в группе «Анимация» и «Как один объект» для «Параметры эффекта».

Обновить: Это очень близко к работе:

Sub AdjustAll () Dim osld As Slide Dim oshp As Shape

For Each osld In ActivePresentation.Slides
    For i = osld.TimeLine.MainSequence.Count To 1 Step -1
        osld.TimeLine.MainSequence(i).Delete
    Next i
    For Each oshp In osld.Shapes
         If oshp.Type = msoPlaceholder Then
            If oshp.Name <> "Content Placeholder 2" Then
                oshp.AnimationSettings.Animate = False
            End If
            If oshp.Name = "Content Placeholder 2" Then
                Set oeff = osld.TimeLine.MainSequence.AddEffect(Shape:=oshp, effectid:=msoAnimEffectAppear, trigger:=msoAnimTriggerOnPageClick)
                oshp.AnimationSettings.AnimationOrder = 1
            End If
        End If
        If oshp.Type = msoMedia Then
            If oshp.MediaType = ppMediaTypeSound Then
                Set oeff = osld.TimeLine.MainSequence.AddEffect(Shape:=oshp, effectid:=msoAnimEffectMediaPlay, trigger:=msoAnimTriggerWithPrevious)
                oshp.Left = 460.7499
                oshp.Top = 250.7499
                oshp.ScaleHeight 0.2, msoTrue
                oshp.ScaleWidth 0.2, msoTrue
                oshp.AnimationSettings.PlaySettings.LoopUntilStopped = True
            End If
        End If
    Next oshp
Next osld

End Sub *

За исключением того, что я заканчиваю с двумя триггерами, который выглядит неправильно, но, похоже, не вызывает проблем.

enter image description here

Обновление: надеюсь, окончательное обновление. Я думаю, что мне просто нужно очистить анимацию по умолчанию для аудио. Я добавил это к началу условия:

            If oshp.MediaType = ppMediaTypeSound Then
                oshp.AnimationSettings.Animate = False
...