Vba 如何命名PowerPoint幻灯片中的对象?

Vba 如何命名PowerPoint幻灯片中的对象?,vba,powerpoint,Vba,Powerpoint,因此,我知道如何使用VB命名PowerPoint中的文本框或类似对象,但我想知道是否有办法通过功能区命名对象(PowerPoint 2007)。例如,如果我在幻灯片上添加一个文本框,是否有办法为其指定一个名称(有点像access中的“属性”窗口,或Excel 2003中位于左上角的文本框,您可以在其中输入名称) 基本上,我可以在以后的代码中引用它;不必使用代码来命名我在事实之后添加的每个对象。也许更容易穿过丝带?是的。单击对象(文本框、形状等)以选择对象,然后在绘图工具|格式选项卡中,单击排列组

因此,我知道如何使用VB命名PowerPoint中的文本框或类似对象,但我想知道是否有办法通过功能区命名对象(PowerPoint 2007)。例如,如果我在幻灯片上添加一个文本框,是否有办法为其指定一个名称(有点像access中的“属性”窗口,或Excel 2003中位于左上角的文本框,您可以在其中输入名称)


基本上,我可以在以后的代码中引用它;不必使用代码来命名我在事实之后添加的每个对象。也许更容易穿过丝带?

是的。单击对象(文本框、形状等)以选择对象,然后在绘图工具|格式选项卡中,单击排列组中的选择窗格。从那里,您将看到对象的名称-您可以双击(或按F2键)任何名称并重命名它。通过取消选择它,它将被重命名。您也可以从主页选项卡->绘图组->排列下拉列表->选择窗格或按ALT+F10进行选择。

虽然上面的答案是正确的,但我不建议您更改名称以便在代码中依赖它

名字很微妙。他们可以改变。 您应该使用ShapeId和SlideId

尤其要注意以编程方式更改形状的名称,因为PowerPoint依赖于该名称,这可能会妨碍其正常操作。

这不是对原始问题的回答,而是对@Dudi答案评论中@Teddy问题的回答

以下是一种将活动演示文稿中的id列表到VBA编辑器中的即时窗口(Ctrl+G)的方法:

Sub ListAllShapes()

    Dim curSlide As Slide
    Dim curShape As Shape

    For Each curSlide In ActivePresentation.Slides
        Debug.Print curSlide.SlideID
        For Each curShape In curSlide.Shapes

                If curShape.TextFrame.HasText Then
                    Debug.Print curShape.Id
                End If

        Next curShape
    Next curSlide
End Sub

单击插入->对象->从文件创建->浏览

选择文件后,选择“更改图标”选项,您将能够重命名文件并根据需要更改图标


希望这有帮助

选择对象->格式->选择窗格->双击以更改名称


我怎样才能找到哪些ID?@Dudi不正确。海报想要设置一个标识符。Shape.Id是只读的。托德·梅因的回答是正确的。演示如何设置和获取形状。Name@user1515373托德说:“基本上,我可以在以后的代码中引用它。”。我指出,形状不是你应该依赖的东西,因为Powerpoint会弄乱它。即使你设置了它。@Dudi:那可能很重要。您知道在我设置名称后会更改名称的操作或操作序列吗?或者至少是一个引用,它说PP可以在我给它命名后自行更改对象名称。这在PowerPoint Mac 2011中可以做到吗?@posdef我不知道,因为我不使用Macintosh在PowerPoint for Mac 2011中没有选择窗格。仅供参考,在PowerPoint 2013中,单击表格(或您正在编辑的任何形状)>单击布局选项卡>此选项卡上提供排列组和选择窗格。如果您在这里使用Apache POI,并希望通过一种简单的方式重新排序并获取幻灯片布局的占位符ID,我可以确认(至少对于POI v4.0)这不起作用,并且选择窗格中的更新不会以POI将拾取的方式反映出来。(为了支持按名称获取占位符,可能需要更改XSLFSheet.class的工作方式)