Menu:

Links:

Use these links to navigate the FAQ:

Next:
How do I edit the StarterSet configuration file (PPTools.INI)?

Previous:
TIP: Make several images the same size

All about StarterSet index page

Updated
7/25/2016

Microsoft MVP Logo

Problem: Shape names don't stick

Names assigned using the Object Properties tool don't seem to work

We know of two reasons you might see this:

Duplicate names are not allowed
PowerPoint won't allow more than one shape on a slide to have the same name. If you already have a shape named XXX, you can't give another shape that same name.

When this happens, you'll see a message that explains why the name can't be changed, and the name will be reset to the original name in the Object Properties dialog box.

Note:

Names in the Custom Animation task pane
Every shape has two names, an "internal" name that PPT assigns when the shape is created and a "friendly" name (which starts out being the same as the internal name). Add-ins like StarterSet can change the friendly name but not the internal name.

Unfortunately, PowerPoint shows the "internal" name, not the friendly name, in the custom animation pane, and there's nothing we can do to change this, other than wait for PowerPoint 2007, where the problem's fixed.

A workaround while we wait ...
The VBA macros below can help. If a shape has text, PowerPoint will show its name, followed by the text, in the Custom Animation pane. So what we do here is look at each shape; if it doesn't have text, we give it some (and use the friendly Name as the text). After you run NamesToText below, you'll see both the internal and friendly names in the Custom Animation pane. Run UndoNamesToText (further below) to remove the text from shapes that didn't originally have any.

Sub NamesToText()
    Dim oSl As Slide
    Dim oSh As Shape

    For Each oSl In ActivePresentation.Slides
        For Each oSh In oSl.Shapes
            If oSh.HasTextFrame Then
                If oSh.TextFrame.HasText Then
                    ' leave it alone
                Else
                    oSh.TextFrame.TextRange.Text = oSh.Name
                    oSh.Tags.Add "TextIsName", "TRUE"
                End If
            End If
        Next
    Next
End Sub

Sub UndoNamesToText()
    Dim oSl As Slide
    Dim oSh As Shape

    For Each oSl In ActivePresentation.Slides
        For Each oSh In oSl.Shapes
            If oSh.HasTextFrame Then
                If oSh.Tags("TextIsName") = "TRUE" Then
                    oSh.TextFrame.TextRange.Delete
                    oSh.Tags.Delete ("TextIsName")
                End If
            End If
        Next
    Next

End Sub
[Previous] [Home] [Next]