广义形状分组宏VBA PowerPoint

时间:2017-09-26 22:58:17

标签: vba grouping powerpoint shape powerpoint-vba

我希望编写一个通用的PowerPoint宏来将特定的形状组合在一起。问题是我不知道具体的形状名称,因为我的幻灯片每次都变化很小。这是我的情况:我有一组PowerPoint形状,其名称以前缀“rc”开头。例如,它们可以是“rc48”,“rc49”,“rc50”,“rc51”。它们总是以递增的数字顺序排列,幻灯片上唯一的“rc”命名形状。遵循这些形状,我有一组前缀为“tx”的形状(它们不是幻灯片中唯一的“tx”形状,但它们总是遵循“rc”形状)并且始终存在等量的“tx” “跟随”rc“对象的对象。所以在这个例子中我会有“tx52”,“tx53”,“tx54”,“tx55”。

我想做的是将这些对象组合在一起。所以group1将是(“rc48”,“tx52”)。 group2将是(“rc49”,“tx53”)等等。

我对VBA中的编码知之甚少,但我在其他编程语言中的方法是在顺序形状名称向量中找到“rc”形状的位置,然后计算超过“rc”位置的长度(rcshapes_vector)找到我需要的“tx”形状,然后遍历这些对。

我意识到这是一个复杂的问题,但任何帮助都会非常感激。

1 个答案:

答案 0 :(得分:0)

在PowerPoint中使用vba代码非常痛苦,因为您没有很多功能,例如Excel vba,但我希望以下想法可以帮助您:

您可以验证形状类型,例如If oShp.Type = msoTextBox ThenIf oShp.Type = msoPicture Then

同样对于每个Shape,您可以验证顶部或左侧属性以查找幻灯片中的位置。 如果你确定你的形状有这些名字,也许你可以试试:

Dim oShp As Shape
For Each oShp In ActivePresentation.Slides(SldNumber).Shapes
   If oShp.Name = "rc49" Then
      Do Something
   End If
next