Here’s another tip that concerns Publisher Shape objects. When you mouse hover over a shape on a publication page, Publisher displays the shape name as a tool tip. You can set the shape name to anything you want, and this becomes the tool tip displayed by Publisher on mouse hover.

The default name of a shape is usually a generic shape type description, followed by a number that denotes the order in which shapes were added to the publication. For example, ‘Picture 12’ is a picture, and was most likely the twelfth shape added to the publication. When you mouse hover over a shape, Publisher displays the default shape name, minus the numbering; it displays ‘Picture’, as opposed to ‘Picture 12’.

To set the name of a shape, just set the Shape.Name property to the string of your choice. If you end the string with a number, Publisher displays that too. For example, if the default name of a shape is ‘Picture 12’, Publisher displays ‘Picture’. But if you overwrite the default name and explicitly set the name to ‘Picture 12’, then Publisher displays ‘Picture 12’. Remember that each individual shape in a grouped shape also has a name which displays as you mouse hover. As far as I can tell, the group shape name only displays when you hover over the rotation tool on the grouped shape. To access the shapes in a grouped shape, use the Shape.GroupItems property.

Shape names must be unique, however; trying to name multiple shapes the same thing generates an error.

The tool tip that Publisher displays on mouse hover shouldn’t be confused with alternative text. Alternative text applies to web pages; it’s the text shown while an image is downloading, or if the user has their browser set to not displays pictures. It is completely separate from a shape’s name. By default, a shape’s alternative text is empty; Publisher does not set the default alternative text equal to the same name.

To demonstrate this, do the following: create a blank web page, and insert several shapes on the page. Hover over them to see Publisher’s default tool tips. Then run the following code, which generates custom names and alternative text for each shape:

Sub AddAltTextToShapes()

Dim shpLoop As Shape

Dim intCount As Integer

intCount = 1

 

With ActiveDocument.Pages

    For Each shpLoop In .Item(1).Shapes

        shpLoop.Name = "MyShape " & intCount

        shpLoop.AlternativeText = "Alt Text For MyShape " & intCount

        intCount = intCount + 1

    Next

End With

End Sub

In the Publisher file, you can now hover over the shapes and Publisher displays the custom shape names. Preview the web page in your browser (File > Web Page Preview). Now set your browser to not display pictures, and refresh the page. (In IE, this options is buried here: Tools > Internet Options > Advanced > Multimedia > Show Pictures.) You should see the custom alternative text for each shape.

Here’s a routine that sets the alternative text of a shape equal to that shape’s name. Just be aware that you can nest grouped shapes, so if you had grouped shapes several levels deep, you’d have to add recursive logic to set the alternative text for those nested shapes as well.

Sub SetShapeNameAsAddAlt()

Dim shpLoop As Shape

Dim shpLoop2 As Shape

 

With ActiveDocument.Pages

    For Each shpLoop In .Item(1).Shapes

        shpLoop.AlternativeText = shpLoop.Name

        If shpLoop.Type = pbGroup Or _

            shpLoop.Type = pbGroupWizard Then

            For Each shpLoop2 In shpLoop.GroupItems

                shpLoop2.AlternativeText = shpLoop2.Name

            Next

        End If

    Next

End With

End Sub