Jamie Garroch (MVP)
asked on
How to return a reference to a text object inside the Excel chart object model with VBA?
Is it possible to return a reference to the selected text within a chart object placed on a PowerPoint slide?
In the example below, the text for the chart title object is selected.
This returns true in the PowerPoint VBE Immediate window:
But both of these return the error "The specified value is out of range.":
Is there a way to return a reference to these types of formatted text objects within the Excel chart OM?
In the example below, the text for the chart title object is selected.
This returns true in the PowerPoint VBE Immediate window:
?ActiveWindow.Selection.Type=ppSelectionText
But both of these return the error "The specified value is out of range.":
?ActiveWindow.Selection.TextRange.Text
?ActiveWindow.Selection.TextRange2.Text
Is there a way to return a reference to these types of formatted text objects within the Excel chart OM?
ASKER
Thanks Norie. I tried the following and I get the same error when text inside a chart on the slide is selected but not when text inside a text box on the slide is selected:
' To test:
' 1. Insert a chart on a PowerPoint slide
' 2. Select the text inside the chart title object
' 3. Run this macro
Sub TestChartTitleSelection()
Dim oObj As Object
Set oObj = ActiveWindow.Selection
Debug.Print TypeName(oObj) ' Returns "Selection"
Debug.Print oObj.Type ' Returns 3 = ppSelectionText
Debug.Print oObj.TextRange.text ' Error "The specified value is out of range."
End Sub
Are you trying to do something with the chart title?
ASKER
Yes, but only as an example so even though I know how to reference it via the Chart OM, this isn't the use case. I need to be able to get a reference to the user-selected text within the chart and then apply a format to that text.
So even if they had only selected part of the chart title you would want a reference to that?
ASKER
Ideally, yes.
I'm not sure the selected text can really be treated as an 'object'.
Did you check out the properties of oObj in the Locals Window when running the code you posted?
Did you check out the properties of oObj in the Locals Window when running the code you posted?
ASKER
Have you tried looking at the ChartTitle property of the Chart object?
If you can access that you should be able to access the Characters object of its TextFrame object.
Mind you, I don't think you'll be able to determine/access the selected characters - there's no SelStart/SelLength property as this is for a Textbox on a userform.
If you can access that you should be able to access the Characters object of its TextFrame object.
Mind you, I don't think you'll be able to determine/access the selected characters - there's no SelStart/SelLength property as this is for a Textbox on a userform.
ASKER CERTIFIED SOLUTION
membership
Create a free account to see this answer
Signing up is free and takes 30 seconds. No credit card required.
Open in new window
That should give you a reference to the selected object that you can then examine in the Locals Window to see how you can access the properties you want.