How to get selected text from a table cell in PPT 2007 using VBA?

  • Thread starter Thread starter Dave
  • Start date Start date
D

Dave

I seem to be unable to get my hands on the textrange for selected text
contained within a table cell in PPT 2007. I did have some code that
worked in PPT 2003 (definitions, etc. removed for brevity):

' anything selected that contains text?
With ActiveWindow.Selection

' has more than one shape been selected?
If .Type = ppSelectionText Then
If .TextRange <> "" Then <== error on this line
Set temp = .TextRange
tRanges.Add temp
Else
For i = 1 To ActiveWindow.Selection.ShapeRange.Count
BuildTextRangeCollection
ActiveWindow.Selection.ShapeRange(i), tRanges
Next i
End If
..
..
..

When I run this code in 2007 with a portion of the text in one table
cell selected, I get a "Specified value is out of range" VBA error on
the specified line.

If I run the code with a complete cell or cells selected, I don't get
the error, but the routine at BuildTextRangeCollection is unable to
identify any textranges associated with the selected shapes.

Is there a workaround for this? Thanks ...
 
I think the problem may be that you are comparing a 'text range' object to a
'text string' object. Try adding .text after the .textrange so that you are
comparing two 'text strings'.

--
Bill Dilworth
A proud member of the Microsoft PPT MVP Team
Users helping fellow users.
http://billdilworth.mvps.org
-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
vestprog2@ Please read the PowerPoint FAQ pages.
yahoo. They answer most of our questions.
com www.pptfaq.com
..
 
The comparison of a textrange object to a string has worked all along
(in 2003, i.e.), and continues to work in 2007, provided the textrange
exists. Nevertheless, I made the change you suggested but the problem
persists.

The problem here is that the properties of the selection, whether it
be a portion of the text in a cell, or the entire cell, show in the
debugger the following value for the selection's textrange:
"<Specified value is out of range>."

Got any other insights, BIll? Thanks!
 
Dave, this has been reported up the line. I have it on good authority that this
should work in the future, if not now:

Sub etc()

' anything selected that contains text?
With ActiveWindow.Selection

Dim Temp As TextRange
Dim i As Long

' has more than one shape been selected?
If .Type = ppSelectionText Then
If .TextRange <> "" Then ' <== NO MORE error on this line
Set Temp = .TextRange
'tRanges.Add temp
Else
For i = 1 To ActiveWindow.Selection.ShapeRange.Count
'BuildTextRangeCollection ActiveWindow.Selection.ShapeRange (i),
tRanges
Next i
End If
End If
End With

End Sub
 
Not sure I understand, Steve. Are you suggesting that I just comment out the
code that gives me the range(s) that the user has selected? That kind of
flies in the face of what I'm trying to accomplish, doesn't it?
 
Dave Jenkins said:
Not sure I understand, Steve. Are you suggesting that I just comment out the
code that gives me the range(s) that the user has selected?

Ranges? You got users who can select multiple ranges in PPT? ;-)

No, just suggesting that what's broken now will likely be fixed eventually.
 
The table in PowerPoint 2007 is a different animal altogether and though
automation works in parts, it does not work for what you are attempting. So
you are out of luck in this case.


--
Regards,
Shyam Pillai

Image Importer Wizard
http://skp.mvps.org/iiw.htm
 
Back
Top