change33
change33

Reputation: 75

VBA for capitalizing title slides

I want to use VBA to capitalize each word in the titles of all my PowerPoint slides.

So far this is the code I am using:

Sub Capitalize()
    Dim sld As Slide

    For Each sld In ActivePresentation.Slides
            sld.Title.TextFrame.TextRange.ChangeCase ppCaseTitle
        Next sld
End Sub

It's giving me an error by highlighting the "Title" and saying "Method or data member not found"

Any help would be greatly appreciated. Thanks!

Upvotes: 2

Views: 548

Answers (2)

Shyam Pillai
Shyam Pillai

Reputation: 586

The Title object is available on the Shapes object, which maps on to the placeholder title for the slide. I would also use the HasTitle property to check if the slide has a title or not.

Sub Capitalize()
Dim sld As Slide

For Each sld In ActivePresentation.Slides
    If sld.Shapes.HasTitle Then
        sld.Shapes.Title.TextFrame.TextRange.ChangeCase ppCaseTitle
    End If
Next sld
End Sub

Upvotes: 2

Mathieu Guindon
Mathieu Guindon

Reputation: 71157

A Slide object doesn't have a Title property. You need to look for the Shape object that contains the title text.

Iterate the .Shapes collection and use its Name to know when you've found the one that contains your title (then you can exit the loop).

This assumes you've named the title shape "Title" or something.

Dim sld As Slide, shp As Shape
Dim found As Boolean
For Each sld In ActivePresentation.Slides
    For Each shp In sld.Shapes
        If shp.Name = "Title" Then
            found = True
            shp.TextFrame.TextRange.ChangeCase ppCaseTitle
        End If
        If found Then Exit For
    Next
    If found Then Exit For
Next

Upvotes: 1

Related Questions