【问题标题】:How to add a Shape object to Shapes collection如何将 Shape 对象添加到 Shapes 集合
【发布时间】:2017-05-06 04:44:18
【问题描述】:

这可能看起来微不足道,但我一直无法找到方法。 PowerPoint 对象模型如何允许您将Shape 对象添加到幻灯片的Shapes 集合中?我可以使用Shapes.AddSmartArt()Shapes.AddPicture() 等函数添加新形状,但这些会添加 形状。如果我想将现有的 Shape 对象引用添加到幻灯片的形状中怎么办?

一种方法是在形状对象上调用Copy(),然后在目标幻灯片中调用Paste(),但我发现它不太理想,因为我们将在此过程中修改剪贴板(我知道我们可以在手术后恢复,但是这又是蹩脚的)。

据我搜索,Shapes 集合中没有 Add()Append()Insert() 函数。

编辑

也许我说得不够清楚。让我再尝试一次。假设我在这样的变量中有一个 Shape 对象(PowerPoint/VSTO/C#):

Shape s = GetShape(); //This function returns a Shape object
MyPresentation.Slides[1].Shapes.???(s);

我需要一个合适的函数来代替???AddInsertAppend 等,但对象模型中不存在这样的东西。

【问题讨论】:

  • 我不太明白您的问题:将形状从一张幻灯片移动或复制到另一张幻灯片的方法是复制、粘贴并删除旧的(如果需要)。你修改剪贴板的内容是什么意思?当你想成功时,你必须保持剪贴板原样。
  • @ChristineRoss:查看我的编辑。
  • 我的答案仍然是复制和粘贴。您不需要神秘的函数 getshape,因为所有类型的形状都有创建方法(形状、图表等)。见here

标签: vba vsto powerpoint


【解决方案1】:

形状集合是只读的。那是因为它们只包含特定于某个范围的形状。在 Word 中,该范围可以是段落、部分、页眉、组形状、整个文档等。在 PowerPoint 中,我假设您可以从幻灯片、所有幻灯片甚至组形状中获取形状列表.

您不能直接添加到形状集合,因为您必须指定该形状应该去哪里。使用新形状执行此操作的方法已经存在。这种方法不存在用于移动或复制形状。

如果有一种方法可以在不使用复制/粘贴的情况下将形状移动到不同的位置,那就太好了,但 Microsoft 的某个人一定认为它不值得这样做。

【讨论】:

  • 是的。这也是我的结论。
猜你喜欢
  • 2014-12-09
  • 1970-01-01
  • 2019-01-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多