2017-09-26 121 views
0

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

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

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

我意识到这是一个复杂的问题,但任何帮助将不胜感激。

回答

0

在PowerPoint中VBA代码工作真的是痛苦的,因为你没有很多的功能,如Excel VBA,但我希望下面的想法可以帮助你:

您可以验证形状的类型像If oShp.Type = msoTextBox ThenIf oShp.Type = msoPicture Then

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

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