Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
Home
DiscussionsAccessExcelInfoPathOutlookPowerPointPublisherWord
DirectoryUser Groups
Related Topics
Outlook ExpressInternet ExplorerWindowsMS Server ProductsMore Topics ...

MS Office Forum / Word / Programming / October 2007

Tip: Looking for answers? Try searching our database.

Help with Range.TextRetrievalMode?

Thread view: 
Enable EMail Alerts  Start New Thread
Thread rating: 
Julian - 12 Oct 2007 18:05 GMT
Just come across this oddity... (Word 2002, under Vista HP)

I don't seem to be able to change the values for TextRetrievalMode
(includehiddentext or includefields) when the range it is applied to is a
comment's range (mycomment.range)... Trying different view types on the
TextRetrievalMode object doesn't help either.

And for different comments the TextRetrievalMode settings seem different
(and inconsistent - so I can't compare comments for their "normal" text)

any ideas?
Tony Jollans - 13 Oct 2007 20:54 GMT
It works for me (2002, Vista Ultimate)

   Set CommentRange = ActiveDocument.Comments(1).Range.Duplicate
   Debug.Print CommentRange.Text
   CommentRange.TextRetrievalMode.IncludeHiddenText = True
   Debug.Print CommentRange.Text

produces

   This comment hides  text
   This comment hides some hidden text

(a correct representation of my comment)

Can you post your code?

Signature

Enjoy,
Tony

> Just come across this oddity... (Word 2002, under Vista HP)
>
[quoted text clipped - 7 lines]
>
> any ideas?
Julian - 14 Oct 2007 12:09 GMT
I'll get back with some code later - after I have tested something based on
your example: I noticed immediately that you worked with a range duplicate
whereas I was working directly on the comment range. I don't immediately see
why that should make any difference but it's worth checking!

Thanks
Julian - 15 Oct 2007 11:07 GMT
OK - update.

Two discoveries:

1. You cannot set TextRetrievalMode with comment.range.TextRetrievalMode...
you have to assign the comment range to a range object and work with that

2. You cannot create e.g. an Index Field directly in a comment - but if you
copy and paste one into a comment, TextRetrievalMode.HiddenText = false gives
the plain text, and TextRetrievalMode.HiddenText = true includes the field
code text regardless of the IncludeFieldCode setting (i.e. Field Code is not
recognised as such and is treated purely as hidden text, which is how it is
formatted)

3. hidden text visibility (UI setting) determines the default state of
.IncludeHiddenText - i.e. if hidden text is visible and you *don't* want it,
you must explicitly turn it off...

That probably accounts for the problems I was having... some text was pasted
into  a comment and brought a (hidden) Index Entry field code with it, and I
was working directly on the comment range and not indirectly via a range
object (doesn't need to be a duplicate)

Thanks for prodding me along...

Julian

PS Code that illustrates the above (for suitable comments!) as follows...

Sub testCommentHiddentText()
   Dim aCom As Comment
   Dim aStr As String
   Dim aRange As Range
   
   Set aCom = Selection.Comments(1)
   aStr = aCom.Range.Text
   
   Debug.Print "Working directly on comment range"
   Debug.Print "Incl. Hidden Text = " & vbTab &
aCom.Range.TextRetrievalMode.IncludeHiddenText & vbTab & " Incl Field Codes =
" & vbTab & aCom.Range.TextRetrievalMode.IncludeFieldCodes & vbTab & " Result
= " & vbTab & aCom.Range.Text
   aCom.Range.TextRetrievalMode.IncludeHiddenText = True
   Debug.Print "Incl. Hidden Text = " & vbTab &
aCom.Range.TextRetrievalMode.IncludeHiddenText & vbTab & " Incl Field Codes =
" & vbTab & aCom.Range.TextRetrievalMode.IncludeFieldCodes & vbTab & " Result
= " & vbTab & aCom.Range.Text
   aCom.Range.TextRetrievalMode.IncludeFieldCodes = True
   Debug.Print "Incl. Hidden Text = " & vbTab &
aCom.Range.TextRetrievalMode.IncludeHiddenText & vbTab & " Incl Field Codes =
" & vbTab & aCom.Range.TextRetrievalMode.IncludeFieldCodes & vbTab & " Result
= " & vbTab & aCom.Range.Text
   
   Debug.Print "Working on range object from Comment range"
   Set aRange = aCom.Range
   Debug.Print "Incl. Hidden Text = " & vbTab &
aRange.TextRetrievalMode.IncludeHiddenText & vbTab & " Incl Field Codes = " &
vbTab & aRange.TextRetrievalMode.IncludeFieldCodes & vbTab & " Result = " &
vbTab & aRange.Text
   aRange.TextRetrievalMode.IncludeHiddenText = True
   Debug.Print "Incl. Hidden Text = " & vbTab &
aRange.TextRetrievalMode.IncludeHiddenText & vbTab & " Incl Field Codes = " &
vbTab & aRange.TextRetrievalMode.IncludeFieldCodes & vbTab & " Result = " &
vbTab & aRange.Text
   aRange.TextRetrievalMode.IncludeFieldCodes = True
   Debug.Print "Incl. Hidden Text = " & vbTab &
aRange.TextRetrievalMode.IncludeHiddenText & vbTab & " Incl Field Codes = " &
vbTab & aRange.TextRetrievalMode.IncludeFieldCodes & vbTab & " Result = " &
vbTab & aRange.Text
   
   Debug.Print "Working on duplicate range object from Comment range"
   Set aRange = aCom.Range.Duplicate
   Debug.Print "Incl. Hidden Text = " & vbTab &
aRange.TextRetrievalMode.IncludeHiddenText & vbTab & " Incl Field Codes = " &
vbTab & aRange.TextRetrievalMode.IncludeFieldCodes & vbTab & " Result = " &
vbTab & aRange.Text
   aRange.TextRetrievalMode.IncludeHiddenText = True
   Debug.Print "Incl. Hidden Text = " & vbTab &
aRange.TextRetrievalMode.IncludeHiddenText & vbTab & " Incl Field Codes = " &
vbTab & aRange.TextRetrievalMode.IncludeFieldCodes & vbTab & " Result = " &
vbTab & aRange.Text
   aRange.TextRetrievalMode.IncludeFieldCodes = True
   Debug.Print "Incl. Hidden Text = " & vbTab &
aRange.TextRetrievalMode.IncludeHiddenText & vbTab & " Incl Field Codes = " &
vbTab & aRange.TextRetrievalMode.IncludeFieldCodes & vbTab & " Result = " &
vbTab & aRange.Text
   
End Sub
Tony Jollans - 15 Oct 2007 11:57 GMT
Glad you've worked it all out. Well done!

Just one comment (no pun intended) on your point 1. It is generally better
(in all sorts of cases) to work with your own ranges rather than those
returned by range properties of various document objects. In a nutshell:
your own objects tend to do what you tell them - document objects do what
the document tells them.

Signature

Enjoy,
Tony

> OK - update.
>
[quoted text clipped - 110 lines]
>
> End Sub
Julian - 15 Oct 2007 21:04 GMT
Thanks Tony -

> Just one comment (no pun intended) on your point 1.

of the pair in 3 parts!

>It is generally better
> (in all sorts of cases) to work with your own ranges rather than those
> returned by range properties of various document objects. In a nutshell:
> your own objects tend to do what you tell them - document objects do what
> the document tells them.

Yeah, I do sort of know that, but it's a workaround for an I/F inconsistency
rather than a solid principle IMO: unless one uses range.duplicate an
assigned range object *should* just be a separate reference to the same
underlying object - so either the method should work along both routes or it
should work along neither...

It's a bit annoying having to program defensively to avoid such
obscurities... but I can think of worse problems <g>

...really ought to compile all my assorted "despite what I thought/the
documentation says..." code comments into a "Warning - this doesn't do what
you expect!" list.

Hmmm... I could write some code to strip them out automatically... LOL

Ta,

Julian
 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2008 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.