Powerpoint Programmatically finden und zu löschen Animation / Effekt
-
03-10-2019 - |
Frage
Ich habe programmatisch (VSTO) hinzugefügt Animationen auf die Powerpoint-Folie mit dem folgenden Code
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;
Wie würde ich mich über die Animation zu löschen, ohne textBox2
löschen? Gibt es einen Weg durch die Animationen zu überqueren und finden die, die ich brauche, um zu löschen, die mit textBox2
verbunden?
Lösung 2
Dank Shyam Pillai für die Antwort, ich seinen VBA-Code übersetzt wie folgt:
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();
}
}
}
}
Andere Tipps
Vergib mir, weil ich habe keine PPT 2010 praktisch (Sie in Ihrer Frage beachten sollte, ist, dass Version), aber das sollten Sie in die richtige Richtung gestartet.
InteractiveSequences
ist eine Sammlung von Objekten Sequence
Sequence
Objekt ist wirklich eine Sammlung von Objekten Effect
Effect
Objekte haben eine Shape
Eigenschaft
foreach (Sequence seq in activeSlide.TimeLine.InteractiveSequences)
foreach (Effect eff in seq)
if (eff.Shape == "target shape")
...
Ich glaube, es ist ein Entfernen oder vielleicht eine Löschfunktion für das Effect-Objekt selbst.
Es ist einfach das Löschen der Animation ohne Textbox löschen:
dim osh as shape
set osh = .....
oSh.AnimationSettings.Animate = 0 => deleting the animation of osh