PowerPoint VBA:如何将动画开始事件设置为“ With Previous”

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PowerPoint VBA:如何将动画开始事件设置为“ With Previous”相关的知识,希望对你有一定的参考价值。

[在PowerPoint宏中,我想将“动画”选项卡上“计时”组中的“开始”设置为“使用上一个”。今天是我第一次使用VBA,所以请不要嘲笑我的代码:

Sub AdjustAll()暗淡的幻灯片作为形状的昏暗oshp

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

结束子

也许我需要使用AddEffect(),但这看起来有点复杂吗?我看过一些文档和帖子,但没有找到要设置的属性或要应用的值。

我不是要问多个问题,但是如果有人可以进一步协助或告诉我RTFM在哪里,对于另一个对象,我想将同一内容设置为“单击时”,并在其中设置“出现” “动画”组和“效果选项”的“作为一个对象”。

更新:这非常接近工作:

Sub AdjustAll()暗淡的幻灯片作为形状的昏暗oshp

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

结束子

除了我最后得到两个触发器,看起来不正确,但似乎不会引起问题。

enter image description here

更新:希望最终更新。我想我只需要清除音频的默认动画即可。我将此添加到条件的顶部:

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

PowerPoint编程有点复杂。正是您需要使用AddEffect:

Sub AdjustTable()
  Dim oSlide As Slide
  Dim oShape As Shape
  Dim oEffect As Effect
  For Each oSlide In ActivePresentation.Slides
    For Each oShape In oSld.Shapes
      If oShape.Type = msoMedia Then
        If oShape.MediaType = ppMediaTypeSound Then
          oShape.Left = 460.7499
          oShape.Top = 250.7499
          Set oEffect = oSlide.TimeLine.MainSequence.AddEffect(Shape:=oShape, _
          effectid:=msoAnimEffectMediaPlay, MsoAnimateByLevel:=msoAnimateLevelNone, _
          MsoAnimTriggerType:=msoAnimTriggerWithPrevious)
        End If
      End If
    Next oShape
  Next oSlide
End Sub

顺便说一句,如果仅检查媒体类型的占位符,您将错过在内容占位符中插入的任何视频。

以上是关于PowerPoint VBA:如何将动画开始事件设置为“ With Previous”的主要内容,如果未能解决你的问题,请参考以下文章

如何将单元格区域作为表格从 Excel 复制到 PowerPoint - VBA

使用 VBA 将 Excel 图表粘贴到 Powerpoint 中

如何使用 vba 在 powerpoint 中应用特定布局?

VBA 将多个超链接添加到一个 Powerpoint 文本框

如何在 PowerPoint 中使用 VBA 打开嵌入的 OLE 对象

使用 VBA 将 Excel 中的图表嵌入到 Powerpoint 中的指定占位符中