Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Get shape by Id or Name

Tags:

powerpoint

vba

Is there any way to get a shape if you know its Id?

For example:

Dim myshape As Shape
myshape.Id = 42
myshape = getShapeById(myshape.Id)

Or, alternatively, could I get the shape by Name?

Dim myshape As Shape
myshape.Name = "Rectangle 42"
myshape = getShapeByName(myshape.Name)
like image 411
Mateen Ulhaq Avatar asked Apr 03 '11 01:04

Mateen Ulhaq


People also ask

How do you check shape numbers in PowerPoint?

Open up the selection pane, which should be accessed either by Home->Arrange->Selection Pane or if you have the shape selected, Format->[Arrange Panel]->Selection Pane. You can see, select, order, and rename shapes.

How do I change the name of a shape in Excel VBA?

To use it, just create a new Module using the developer tools and VBA and then when you need to rename an object or shape, select the shape and run the macro. You will be asked to enter a new shape. Alternatively, you may want to use the Visibility Pane in order to reorder and rename shapes and object.


1 Answers

Getting a shape .Name by its .Id is somewhat more convoluted than getting its .Id by its .Name.

But here's how it's done:

Sub PrintShapeName()
    Debug.Print getNameByID(3, 1)
End Sub

Function getNameByID(shapeID As Long, slide As Integer)
    Dim ap As Presentation: Set ap = ActivePresentation
    Dim sl As slide: Set sl = ap.Slides(slide)
    sl.Shapes.SelectAll
    Dim sr As ShapeRange
    Set sr = Windows(1).Selection.ShapeRange
    Dim s As Shape
    For Each s In sr
        If s.id = shapeID Then
            getNameByID = s.Name
            Exit Function
        End If
    Next
End Function
like image 79
Todd Main Avatar answered Sep 23 '22 01:09

Todd Main