|
没找到方法把文本框中的特定段落加上效果,换了另外一种思路,先把整个文本框设置“渐入”效果,再把不符合条件的效果从时间线的主序列中删掉。
注意,如果页面上已经存在的自定义动画会被删除。
[code=vb]
Sub 多个页面插入文本动画()
Dim sp As Shape, sld As Slide, teff As Effect, i As Integer, st As String
'每个幻灯片循环一次
For Each sld In ActivePresentation.Slides
'每个图形循环一次
For Each sp In sld.Shapes
If sp.Type = msoShapeCube Or sp.Type = msoTextBox Then '如果是占位框或文本框
If InStr(1, sp.AlternativeText, "【正确答案】", vbTextCompare) > 0 Then '如果包含文本“【正确答案】”
'整个文本框加入效果,实际会出现一系列动画
sld.TimeLine.MainSequence.AddEffect sp, msoAnimEffectFade, msoAnimateTextByFirstLevel, msoAnimTriggerOnPageClick
'msoAnimEffectFade 加入“渐入”效果
'msoAnimateTextByFirstLevel 按照第一级段落处理
'msoAnimTriggerOnPageClick 点击幻灯片触发效果
'从后向前处理各动画,如果不包含特定文字则删除效果
For i = sld.TimeLine.MainSequence.Count To 1 Step -1
Set teff = sld.TimeLine.MainSequence(i)
st = teff.DisplayName 'DisplayName是效果的显示名称,这里实际就是段落文字
If InStr(1, st, "【正确答案】", vbTextCompare) > 0 Or InStr(1, st, "【答案解析】", vbTextCompare) > 0 Then
teff.Timing.Duration = 0.5 '把效果的持续时间设为0.5秒(非常快),也可设为1秒(快速)
Else
teff.Delete '删除效果
End If
Next
End If
End If
Next
Next
End Sub
[/code]
多个页面插入文本动画(最后两行).zip
(43.18 KB, 下载次数: 46)
|
|