参考Ppt VBA中形状的中间层分组(group of groups of groups)

问题描述 投票:0回答:2

我已经为自定义功能区按钮编写了一些代码,可以插入形状组,然后对组进行分组。

为了能够在同一张幻灯片上多次执行此操作,需要重命名形状名称(否则随后按下按钮会混淆并尝试与旧形状组合)。因此,部分代码包括返回遍历形状以在分组后重命名它们。

引用幻灯片的 Shapes 集合可以让您获得顶级组。 引用顶级组的 GroupItems 会将您带到底部。 好像没有办法进入中层。

下图中最顶层的组是“钥匙”形状,可以直接访问

Application.ActiveWindow.View.Slide.Shapes("Key")...

那个形状的GroupItems是末尾已经有下划线的形状

Application.ActiveWindow.View.Slide.Shapes("Key").GroupItems.Count
返回 8 即名称末尾带有下划线的所有形状

橙色方框内的中级组名如何引用?

这个设置是必需的,因为点击按钮时SeriesKeys的数量是未知的,并且可以选择整体形状的格式。功能还允许稍后添加到主“密钥”组中。

所以,将每个组件分组似乎是最好的方法。

vba powerpoint shapes
2个回答
0
投票

不幸的是,我认为不能通过名称访问中间组。

但是,您可以像这样访问多个项目:

Dim sr As ShapeRange
Set sr = Application.ActiveWindow.View.Slide.Shapes.Range(Array("SeriesLabel3_", "SeriesSwab3_"))

sr.Visible = msoFalse

0
投票

你可以试试这个

Dim topGroup as shape, item as Shape
Dim subGroups as ShapeRange
Set topGrop = Application.ActiveWindow.View.Slide.Shapes("Key")
Set subGroups = topGroup.Ungroup

For Each item in subGroups("SeriesKey3")
    debug.print(item.Name)
next item

set topGroup = subGroups.Group
topGorup.name = "Key"

这使顶部分组保持原样,但子组可按名称在子组 ShapeRange 中访问。

© www.soinside.com 2019 - 2024. All rights reserved.