PowerPoint Программно найти и удалить анимацию / эффект - PullRequest
0 голосов
/ 17 сентября 2010

Я программно (VSTO) добавил анимацию к слайду PowerPoint, используя следующий код

    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?

Ответы [ 3 ]

1 голос
/ 17 сентября 2010

Спасибо 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();
                }
            }
        }
    }
1 голос
/ 17 сентября 2010

Простите, потому что у меня нет 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")
      ...

Я полагаю, что для самого объекта Effect есть функция удаления или удаления.

0 голосов
/ 19 июля 2013

это просто удаление анимации без удаления текстового поля:

dim osh as shape

set osh = .....

oSh.AnimationSettings.Animate = 0 => deleting the animation of osh 
...