我想使用vba在PowerPoint中设置所有形状的名称

我想使用vba在PowerPoint中设置所有形状的名称,vba,powerpoint,Vba,Powerpoint,我希望这是一个超级简单的问题,但由于某些原因,我无法理解它。 我在powerpoint幻灯片中有许多形状,如矩形1、矩形2、矩形3, 矩形4、矩形5、矩形6以此类推&五边形1、五边形2、五边形3, 五角大楼4号,五角大楼5号,五角大楼6号。。。。。。具有唯一的名称和许多图标(图形)。 我想更改形状中的所有名称和图标 我试过这个 Sub shapeText() Application.Presentations(1).Slides(1).Shapes(Rectangle 1).TextFrame

我希望这是一个超级简单的问题,但由于某些原因,我无法理解它。 我在powerpoint幻灯片中有许多形状,如矩形1、矩形2、矩形3, 矩形4、矩形5、矩形6以此类推&五边形1、五边形2、五边形3, 五角大楼4号,五角大楼5号,五角大楼6号。。。。。。具有唯一的名称和许多图标(图形)。 我想更改形状中的所有名称和图标

我试过这个

Sub shapeText()

Application.Presentations(1).Slides(1).Shapes(Rectangle 1).TextFrame.TextRange.Text = "DOG"
Application.Presentations(1).Slides(1).Shapes(Rectangle 2).TextFrame.TextRange.Text = "CAT"
Application.Presentations(1).Slides(1).Shapes(Pentagon 1).TextFrame.TextRange.Text = "WATER"
Application.Presentations(1).Slides(1).Shapes(Pentagon 2).TextFrame.TextRange.Text = "FIRE"


End Sub
这是一个漫长的过程(必须完成90行)。我认为使用数组可以很容易地完成。 如果所有数据(“狗”、“猫”、“水”、“火”等)都是从excel中提取出来的,那将是巨大的帮助
工作表和更改将出现在powerpoint幻灯片中。

这里是命名所有形状的快速方法。 如果您想使用数组中的名称,例如
list=array(“dog”、“square”…等)
,那么只需使用
shape.TextFrame.TextRange.Text=list(counter)


你怎么知道哪个形状应该有哪个名称?我不知道你是否注意到了,但是幻灯片上的形状名称没有可预测的名称,除非你手工编辑它们。对于添加到幻灯片中的每个形状,名称末尾的数字都会递增,因此您将永远不会有同时包含矩形1和五角大楼1的默认幻灯片。此外,您对更改图标的要求也不明确。哪些图标?或者你的意思是你想改变形状类型?当我尝试时,我用上面的代码行将形状矩形1的文本改为“狗”。但是形状数字不只是1,2,3…为了更好地理解(我在问题中使用了)它是随机数,即矩形5,矩形11…等等。图标(即蓝牙,wifi…)放置在一个矩形内。因此,我想使用url将wifi图标更改为飞机图标。@SAHU您需要在开始时命名您的形状,然后才能通过
列表更改
。TextFrame
所有形状都不是按递增顺序排列的,它是随机的,如矩形5、矩形24,矩形8…..等。为了便于理解,我在问题中使用了递增顺序。抱歉。我想将矩形5的文本“鼠标”(例如)更改为文本“狗”(例如)。形状顺序不是基于它们在幻灯片上的视觉位置,而是基于形状创建的顺序。这就是为什么通过迭代形状来命名形状的方法不一定有效,除非以有意义的方式对集合进行排序。
Sub nameAllShapes()

    Dim slide As slide
    Dim shape As shape
    Dim counter As Integer

    counter = 1
    For Each slide In ActivePresentation.Slides
        For Each shape In slide.Shapes
            shape.Name = "shapetype:" & shape.Type & "_no:" & counter
            shape.TextFrame.TextRange.Text = shape.Name
            counter = counter + 1
        Next shape
    Next slide
End Sub