如何使用VBA管理PowerPoint书签和基于它们的触发效果?



我想添加音频和将它们关联到TriggerBookmark时序的属性

添加书签:

Function AddBookMark(ByRef MediaObject As Shape, ByVal PositionInMs As Long, ByVal BookMarkName As String) As MediaBookmark
Dim Result As MediaBookmark
With MediaObject
Set Result = .MediaFormat.MediaBookmarks.Add(Position:=PositionInMs, name:=BookMarkName)
End With
Set AddBookMark = Result
End Function

下面的代码
  1. 添加媒体对象
  2. 为媒体对象添加2个书签
  3. 添加矩形
  4. 创建效果和动画行为

动画工作,但我想启动基于创建的书签的运动效果。注释的2行不起作用。有人知道为什么吗?

Sub SetBookMarkAsTriggerTest()
FileName = "C:pathtoyour.mp3"
Dim Slide          As Slide
Dim MediaObject    As Shape
Dim AnimatedShape  As Shape
Dim FirstBookMark  As MediaBookmark
Dim SecondBookMark As MediaBookmark
Dim FirstEffect    As Effect
Dim SecondEffect   As Effect
Dim Behaviour As AnimationBehavior

Set Slide = ActivePresentation.Slides(1)
Set MediaObject = Slide.shapes.AddMediaObject2(FileName, msoTrue,_ 
msoTrue, 50, 50)
MediaObject.name = "MediaOBject1"
Set FirstBookMark = AddBookMark(MediaObject, 5000, "bm1")
Set SecondBookMark = AddBookMark(MediaObject, 7000, "bm2")  
Set AnimatedShape = Slide.shapes.addShape(msoShapeRectangle, _ 
0, 0, 100, 50)

Set FirstEffect = Slide.TimeLine.MainSequence.AddEffect(Shape:=AnimatedShape, _
EffectId:=msoAnimEffectFade, Trigger:=msoAnimTriggerAfterPrevious)
FirstEffect.Timing.Duration = 10    

Set Behaviour = FirstEffect.Behaviors.Add(msoAnimTypeMotion)
With Behaviour
With .motionEffect
.FromX = 0
.FromX = 0
.ToX = 50
.ToY = 50
End With
With .Timing
.Duration = 2
'this line does not work...why ?
'.TriggerType = msoAnimTriggerOnMediaBookmark
'this line does not work neither...why ?
'.TriggerBookmark = "bm1"
End With
End With
End Sub

非常感谢!

我通过使用InteractiveSequences做到了我想要的.然后,我们可以使用基于书签的AddTriggerEffect方法添加一个触发效果,如下所示:

Function AddBookMark(ByRef MediaObject As Shape, ByVal PositionInMs As Long, ByVal BookMarkName As String) As MediaBookmark
Dim result As MediaBookmark
With MediaObject
Set result = .MediaFormat.MediaBookmarks.Add(Position:=PositionInMs, Name:=BookMarkName)
End With
Set AddBookMark = result
End Function
Sub SetBookMarkAsTriggerTest()
fileName = "C:pathtoyour.mp3"
Dim Slide          As Slide
Dim MediaObject    As Shape
Dim AnimatedShape  As Shape
Dim FirstBookMark  As MediaBookmark
Dim FirstEffect    As effect
Dim Behaviour As AnimationBehavior

Set Slide = ActivePresentation.Slides(1)
Set MediaObject = Slide.shapes.AddMediaObject2(fileName, msoTrue, _
msoTrue, 50, 50)
MediaObject.Name = "MediaOBject1"
Set FirstBookMark = AddBookMark(MediaObject, 5000, "bm1")
Set AnimatedShape = Slide.shapes.AddShape(msoShapeRectangle, _
0, 0, 100, 50)
Dim Sequence As Sequence: Set Sequence = Slide.TimeLine.InteractiveSequences.Add(1)

Set FirstEffect = Sequence.AddTriggerEffect(pShape:=AnimatedShape, effectId:=msoAnimEffectAppear, _
trigger:=msoAnimTriggerOnMediaBookmark, pTriggerShape:=MediaObject, BookMark:="bm1")
End Sub

相关内容

最新更新