获取PPT中动画的播放时间

来源:互联网 发布:js clone 方法 编辑:程序博客网 时间:2024/05/01 04:17

作者:原创

为了更好的通过OLE控制PPT的播放,我们需要清楚的知道每页PPT中各个动画效果的播放次序及相关时间特性.

相关PPT对象及属性:

  • ActivePresentation:返回一个 Presentation 对象,该对象代表在活动窗口中打开的演示文稿。
  • Slides.Item(i):代表一个幻灯片。Slides 集合包含演示文稿中的所有Slide 对象。
  • TimeLine:返回 TimeLine 对象,该对象代表幻灯片的动画日程表。
  • MainSequence.Item(j):返回幻灯片的主动画序列中的一个 Effect 对象,代表有关幻灯片动画的计时信息。
  • Timing:返回 Timing 对象,该对象代表动画序列的计时属性。
  • Speed:返回或设置 Single 类型值,该值代表指定动画的速度(以秒为单位)。可读写。
  • TriggerDelayTime:设置或返回 Single 类型值,该值代表启用动画触发器后产生的延时(以秒为单位)。可读写。
  • Duration:返回或设置 Single 数值,该值代表以秒为单位的动画长度。可读写。
  • RepeatCount:设置或返回 Long 类型值,该值代表重复动画所需的次数。可读写。
  • RepeatDuration:设置或返回 Single 类型值,该值代表重复动画应持续的时间(以秒为单位)。可读写。

暂时用到这么多对象及属性,更多详细信息请查阅:PowerPoint Visual Basic参考

VBA代码:

Sub Macro1()
'
' 宏由 mq 记录,日期: 2008-10-9
'
Dim i As Integer
Dim j As Integer
Dim k As Integer

Dim tmpSpeed As Single
Dim tmpDelay As Single
Dim tmpTypa As Integer
Dim tmpStr, tmpstr2 As String
Dim tmpBehavior As AnimationBehavior
Dim Paragraph As Long
Dim Duration As Single
Dim RepeatCount As Single
Dim RepeatDuration As Single


    ActiveWindow.Selection.Unselect
    ActivePresentation.Save
    tmpstr2 = "页" + Chr(9) + "效果" + Chr(9) + "触发条件" + Chr(9) + "速度" + Chr(9) + "延时" + Chr(9) + "时长" + Chr(9) + "重复" + Chr(9) + "循环延时"
    For i = 6 To ActivePresentation.Slides.Count
        For j = 1 To ActivePresentation.Slides.Item(i).TimeLine.MainSequence.Count
               
                tmpType = ActivePresentation.Slides.Item(i).TimeLine.MainSequence.Item(j).Timing.TriggerType
                Select Case tmpType
                Case msoAnimTriggerAfterPrevious
                    tmpStr = "继前一个后"
                Case msoAnimTriggerMixed
                    tmpStr = "混合"
                Case msoAnimTriggerNone
                    tmpStr = "无"
                Case msoAnimTriggerOnPageClick '默认值?
                    tmpStr = "单击页面"
                Case msoAnimTriggerOnShapeClick
                    tmpStr = "单击形状"
                Case msoAnimTriggerWithPrevious
                    tmpStr = "与上一个同时"
                End Select
              
                tmpSpeed = ActivePresentation.Slides.Item(i).TimeLine.MainSequence.Item(j).Timing.Speed
                tmpDelay = ActivePresentation.Slides.Item(i).TimeLine.MainSequence.Item(j).Timing.TriggerDelayTime
                Duration = ActivePresentation.Slides.Item(i).TimeLine.MainSequence.Item(j).Timing.Duration
                RepeatCount = ActivePresentation.Slides.Item(i).TimeLine.MainSequence.Item(j).Timing.RepeatCount
                RepeatDuration = ActivePresentation.Slides.Item(i).TimeLine.MainSequence.Item(j).Timing.RepeatDuration
               
                tmpstr2 = tmpstr2 + Chr(13) + Chr(10) + CStr(i) + Chr(9) + CStr(j) + Chr(9) + tmpStr + Chr(9) _
                 + CStr(tmpSpeed) + Chr(9) + CStr(tmpDelay) + Chr(9) + CStr(Duration) + Chr(9) + CStr(RepeatCount) + Chr(9) + CStr(RepeatDuration)
               
        Next
        Exit For
    Next
    Response = MsgBox(tmpstr2, vbOKOnly, "", "", 0)
End Sub

执行效果:

 

 Delphi的应用方法与VBA基本相同,取相应的属性就可以了。

本文为作者原创,可自由转载,但需注明出处,及本博客地址。