'Retrieve the name of a shape

In Excel we have the "Name Box" in the upper-left side, but I could not find a way to retrieve the name of a shape in Word. How do I do that?



Solution 1:[1]

There are two types of shapes in MS Word- InlineShapes and Shapes. It's quite easy to check name of shape object with some VBA code:

  1. select shape
  2. press Alt+F11 to open VBA Editor
  3. in Immediate window execute this code: ? Selection.ShapeRange.Name
  4. as a result you get name of the shape.

InlineShape doesn't have name property therefore you can't check it's name until you promote your InlineShape to Shape type object.

Solution 2:[2]

Microsoft Word 2010 onwards

From Microsoft Word 2010 onwards (2010, 2013 and 2016) there is an "Selection Pane" in Microsoft Word. On the selection pane the Microsoft Word InlineShapes as well as the Shapes are listed and named. Clicking on one of the shape names allows you to change them.

You can find the Selection Pane in the menu under

  1. "Home"-tab
  2. "Editing"-group
  3. "Select"-button
  4. "Selection Pane..."

Microsoft Word Selection Pane


Microsoft Word versions before 2010

For older Microsoft Word (2003, 2007) versions use the VBA approach (?Selection.ShapeRange.Name) as Kazimierz Jawor posted as an other answer to this question: https://stackoverflow.com/a/17680650/1306012

  1. Select the shape
  2. Open the VBA editor by pressing Alt+F11
  3. Open the immediate window by pressing Ctrl+G
  4. Type ?Selection.ShapeRange.Name in the immediate window to get the shape name

Solution 3:[3]

The most convenient method is to create a macro button, which is accessible from your tabs (e.g., Home, Insert, etc.). This way, you just click on the shape, click the macro button, and voila - the shape name displays in a message box (pop up window).

Use the following code:

MsgBox ActiveWindow.Selection.ShapeRange(1).name

Solution 4:[4]

Correct answer, I hope)))

    For Each ILShp In Doc.InlineShapes
    If ILShp.Type = 5 Then          ' 5 (wdInlineShapeOLEControlObject) - OLE control object. (ComboBox and CheckBox)
        ' if object is ComboBox
        If CStr(ILShp.OLEFormat.ClassType) = "Forms.ComboBox.1" Then
            Cb_Name = ILShp.OLEFormat.Object.Name           ' retuns ComboBox1
        endif
    Next

Solution 5:[5]

Word 2007 Works for pictures and haven't tested the rest

Sub S___FindShapetypeOfSelectedShape()
    
    '1======= msgbox if floating shape selected
        On Error GoTo NOT_FLOATING_SHAPE 'go to check for inline shape
            MsgBox "Floating shape, " & ActiveWindow.Selection.ShapeRange(1).Name '"Picture 1480"; blue dottedlines= "picture 4"
            Exit Sub
    
    NOT_FLOATING_SHAPE:
        'on error goto 0 'use for testing
        On Error GoTo NO_SHAPE_FOUND 'doesnt work???
    
    '2.=========
            MsgBox "Inline Shape type NUMBER = " & ActiveWindow.Selection.InlineShapes(1).Type '
    
    '2a_________check for each type of inline shape
        '!!!(to see if msgbox draft below can be fixed)
        If ActiveWindow.Selection.InlineShapes(1).Type = wdNoSelection Then
            MsgBox "No selection"
            Exit Sub
    
        ElseIf ActiveWindow.Selection.InlineShapes(1).Type = wdInlineShapeChart Then
            MsgBox "wdInlineShapeChart"
            Exit Sub
    
        ElseIf ActiveWindow.Selection.InlineShapes(1).Type = wdInlineShapeDiagram Then
            MsgBox "wdInlineShapeDiagram"
            Exit Sub
        
        ElseIf ActiveWindow.Selection.InlineShapes(1).Type = wdInlineShapeEmbeddedOLEObject Then
            MsgBox "wdInlineShapeEmbeddedOLEObject"
            Exit Sub
    
        ElseIf ActiveWindow.Selection.InlineShapes(1).Type = wdInlineShapeHorizontalLine Then
            MsgBox "wdInlineShapeHorizontalLine"
            Exit Sub
    
        ElseIf ActiveWindow.Selection.InlineShapes(1).Type = wdInlineShapeLinkedOLEObject Then
            MsgBox "wdInlineShapeLinkedOLEObject"
            Exit Sub
    
        ElseIf ActiveWindow.Selection.InlineShapes(1).Type = wdInlineShapeLinkedPicture Then 'EMPTY FRAMES?
            MsgBox "wdInlineShapeLinkedPicture"
            Exit Sub
    
        ElseIf ActiveWindow.Selection.InlineShapes(1).Type = wdInlineShapeLinkedPictureHorizontalLine Then
            MsgBox "wdInlineShapeLinkedPictureHorizontalLine"
            Exit Sub
    
        ElseIf ActiveWindow.Selection.InlineShapes(1).Type = wdInlineShapeLockedCanvas Then
            MsgBox "wdInlineShapeLockedCanvas"
            Exit Sub
    
        ElseIf ActiveWindow.Selection.InlineShapes(1).Type = wdInlineShapeOLEControlObject Then
            MsgBox "wdInlineShapeOLEControlObject"
            Exit Sub
    
        ElseIf ActiveWindow.Selection.InlineShapes(1).Type = wdInlineShapeOWSAnchor Then
            MsgBox "wdInlineShapeOWSAnchor"
            Exit Sub
    
        ElseIf ActiveWindow.Selection.InlineShapes(1).Type = wdInlineShapePicture Then 'DOESNT FIND SOME PICTURES PASTED FROM WEB!
            MsgBox "wdInlineShapePicture"
            Exit Sub
    
        ElseIf ActiveWindow.Selection.InlineShapes(1).Type = wdInlineShapePictureBullet Then
            MsgBox "wdInlineShapePictureBullet"
            Exit Sub
    
        ElseIf ActiveWindow.Selection.InlineShapes(1).Type = wdInlineShapePictureHorizontalLine Then
            MsgBox "wdInlineShapePictureHorizontalLine"
            Exit Sub
    
        ElseIf ActiveWindow.Selection.InlineShapes(1).Type = wdInlineShapeScriptAnchor Then
            MsgBox "wdInlineShapeScriptAnchor"
            Exit Sub
    
        ElseIf ActiveWindow.Selection.InlineShapes(1).Type = wdInlineShapeSmartArt Then
            MsgBox "wdInlineShapeSmartArt"
            Exit Sub
    End If
    
    NO_SHAPE_FOUND:
        MsgBox "No floating or inline shape selected!"
        
    End Sub

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Kazimierz Jawor
Solution 2
Solution 3 cinnamonandgravy
Solution 4 Anton Mukhanin
Solution 5