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:
- You can have two or more shapes with the same name, as long as they're on different slides.
- The same "no duplicates" rule applies to slides within a presentation; no two slides can have the same name.
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]