【问题标题】:Using Microsoft PP Functions in vba code?在 vba 代码中使用 Microsoft PP 函数?
【发布时间】:2015-08-03 17:27:15
【问题描述】:

我为 PowerPoint 编写了一个 vba 宏。一切正常,但我错过了一步。

到目前为止,我的宏以选择幻灯片上的特定形状组结束。完成后,我返回 PowerPoint 并使用“组”按钮从选定的形状中创建一个组。

如何在我的代码中使用这个 Micorsoft Group 函数。我只能将幻灯片上的所有形状归为一组,否则会出错。

我尝试过: ActivePresentation.slide(1).shapes.selected.group 但这不起作用。

我已阅读:

How do I group a set of shapes programmatically in excel 2007 vba?

但是形状的几个名称是相同的,所以这实际上不起作用。而且我不知道如何将形状的索引号存储到变量中 - 这将是解决我的问题的第二种选择。

基本上,微软自己的功能正是我现在需要的,对吧?我采用选定的形状并将它们分组到一个组中。我可以在我的宏中调用这个函数吗?

非常感谢您的帮助。

【问题讨论】:

    标签: vba powerpoint


    【解决方案1】:

    如果您选择了形状,那么应该这样做:

    Activewindow.Selection.ShapeRange.Group

    【讨论】:

    • 非常感谢。那个简单的代码是现在的解决方案。 --> 解决了
    • 感谢您的编辑顺便说一句。刚刚看到我应该使用脚本而不是宏。
    【解决方案2】:
    ActivePresentation.Slides(1).Shapes.Range(Array(2, 3, 4)).Group
    
    ActivePresentation.Slides(1).Shapes.Range(Array("this", "that", "other")).Group
    
    ActivePresentation.Slides(1).Shapes.Range(Array("this", 42, 3)).Group
    

    【讨论】:

    • 非常感谢您的回答。但这并不是我真正要寻找的。请参阅下面的代码。在代码之后,应将所选形状分组。 code 对于 ActivePresentation.Slides(SlideNumber).Shapes 中的每个形状 For l = LBound(Group) To UBound(Group) If Shape.Id = Group(l) Then If l = 1 Then Shape.Select Else Shape.Select Replace :=False End If End If Next l Next code
    • 另一方面:如果我需要这些索引号 [Array(2, 3, 4) - 在您的示例中] 我如何访问或将它们存储到数组中?我知道它们与 Shape.ID 不同,与 Zordernumber 不同。现在在遍历形状时 - 如上面的评论 - 我可以以某种方式说:NewArrayXY(l) = Shape.indexnumber?那我就可以参考了。但我还没有找到这样做的方法。非常感谢您的进一步帮助。
    • 这就是您要搜索的内容,因为您在处理事物时don't want to select thingsShapeGroup 按名称或索引选择形状。您似乎创建了形状并将它们的Ids 存储在数组Group 中 - 只需存储Names,然后调用ActivePresentation.Slides(1).Shapes.Range(Group).Group。两个形状不能有相同的名称,尝试设置重复名称会引发错误号 70。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-11
    • 2015-07-13
    • 1970-01-01
    • 2015-11-06
    • 2010-09-19
    • 2012-07-31
    相关资源
    最近更新 更多