Reputation: 75
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
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
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