PowerPoint编程查找并删除动画/效果
-
03-10-2019 - |
题
我使用以下代码在PowerPoint幻灯片中编程(VSTO)添加了动画
activeSlide.TimeLine.InteractiveSequences.Add().AddTriggerEffect(
textBox2,
MsoAnimEffect.msoAnimEffectFade,
MsoAnimTriggerType.msoAnimTriggerOnMediaBookmark,
selectedShape,
"Bookmark A",
MsoAnimateByLevel.msoAnimateLevelNone);
activeSlide.TimeLine.InteractiveSequences.Add().AddTriggerEffect(
textBox2,
MsoAnimEffect.msoAnimEffectFade,
MsoAnimTriggerType.msoAnimTriggerOnMediaBookmark,
selectedShape,
"Bookmark B",
MsoAnimateByLevel.msoAnimateLevelNone).Exit = MsoTriState.msoTrue;
因此,我将如何删除动画而不删除动画 textBox2
?有没有办法穿越动画并找到我需要删除的动画 textBox2
?
解决方案 2
感谢Shyam Pillai的答案,我将他的VBA代码翻译如下:
private void DeleteAnnimations(Slide slide, Shape shape)
{
for (int i = slide.TimeLine.InteractiveSequences.Count; i >= 1; i--)
{
Sequence sequence = slide.TimeLine.InteractiveSequences[i];
for (int x = sequence.Count; x >= 1; x--)
{
Effect effect = sequence[x];
if (effect.Timing.TriggerType == MsoAnimTriggerType.msoAnimTriggerOnMediaBookmark)
{
if (effect.Shape.Name == shape.Name)
effect.Delete();
}
}
}
}
其他提示
请原谅我,因为我没有PPT 2010方便(您应该在问题中注意到它是该版本),但这应该使您朝着正确的方向启动。
InteractiveSequences
是一个集合 Sequence
对象
Sequence
对象确实是 Effect
对象
Effect
对象有一个 Shape
财产
foreach (Sequence seq in activeSlide.TimeLine.InteractiveSequences)
foreach (Effect eff in seq)
if (eff.Shape == "target shape")
...
我相信效果对象本身有一个删除或删除函数。
它只是在不删除文本框的情况下删除动画:
dim osh as shape
set osh = .....
oSh.AnimationSettings.Animate = 0 => deleting the animation of osh
不隶属于 StackOverflow