【问题标题】:PowerPoint Programmatically find and delete animation/effectPowerPoint 以编程方式查找和删除动画/效果
【发布时间】:2013-07-19 18:56:01
【问题描述】:

我已使用以下代码以编程方式 (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关联的动画?

【问题讨论】:

    标签: vba animation vsto powerpoint


    【解决方案1】:

    感谢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();
                    }
                }
            }
        }
    

    【讨论】:

      【解决方案2】:

      请原谅我,因为我手边没有 PPT 2010(您应该在问题中注明是那个版本),但这应该可以让您朝着正确的方向开始。

      InteractiveSequencesSequence 对象的集合
      Sequence 对象实际上是Effect 对象的集合
      Effect 对象具有Shape 属性

      foreach (Sequence seq in activeSlide.TimeLine.InteractiveSequences)
        foreach (Effect eff in seq)
          if (eff.Shape == "target shape")
            ...
      

      我相信 Effect 对象本身有一个删除或删除功能。

      【讨论】:

      • 你不能foreach办公对象然后删除,所以我发现没有经验。你必须for循环
      【解决方案3】:

      它只是删除动画而不删除文本框:

      dim osh as shape
      
      set osh = .....
      
      oSh.AnimationSettings.Animate = 0 => deleting the animation of osh 
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-12-08
        • 2014-08-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-08-30
        • 1970-01-01
        相关资源
        最近更新 更多