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)
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