cross-references and hyperlinks

J

Jose Durazo

Greetings. Does anyone here know how to change the font style Word uses for
cross-references?

I want my cross-references to have the appearance of hyperlinks, so that my
readers know they can Ctrl+click them to get to the cross-referenced
location.

Potential solutions I've tried and why they don't work for me:
1. Use actual hyperlinks: These don't give me the benefit of updated
cross-reference text based on updated text of the section, bookmark, or
whatever else I'm referencing.

2. Create the cross-reference and then format it as blue underlined text to
give it the appearance of a hyperlink. I do a lot of cross-referencing so I
wish there were some way I could set my cross-references to behave like this
by default. Also, I've noticed some funky formatting problems that occur
after I've done this, such as if I type directly to the right of text after
turning it to blue underline the new text is also blue underlined text....

Thanks in advance,
Jose
 
D

Doug Robbins - Word MVP

Use a macro containing the following code:

Dim aref As Field
For Each aref In ActiveDocument.Fields
If aref.Type = wdFieldRef Then
With aref.result.Font
.Color = wdColorBlue
.Underline = wdUnderlineSingle
End With
End If
Next aref


--
Hope this helps.

Please reply to the newsgroup unless you wish to avail yourself of my
services on a paid consulting basis.

Doug Robbins - Word MVP
 
J

Jose Durazo

Doug, thanks for the help. I hadn't thought of a macro-based solution for
this, but this helped me save a lot of time.

For the benefit of others who want to use this solution, the check "If
aref.Type = wdFieldRef" is not quite right. When I remove this check, all
of my cross-references are correctly changed but some extra fields that
aren't really hyperlinks are turned to blue underlined text. I still have
to figure out which specific field types to check for, but I know I'm on the
right track now.

Thanks again!
Jose
 
D

Doug Robbins - Word MVP

The following code should check to see if the \h (hyperlink) switch has been
added to the Ref field

Dim aref As Field
For Each aref In ActiveDocument.Fields
If aref.Type = wdFieldRef Then
If InStr(aref.Code, "\h") > 0 Then
With aref.result.Font
.Color = wdColorBlue
.Underline = wdUnderlineSingle
End With
End If
End If
Next aref


--
Hope this helps.

Please reply to the newsgroup unless you wish to avail yourself of my
services on a paid consulting basis.

Doug Robbins - Word MVP
 
J

Jose Durazo

Thanks Doug, this works for everything except page numbers, so I changed the
test for field type to "If aref.Type = wdFieldRef Or aref.Type =
wdFieldPageRef Then". This now works almost perfectly. It also causes a
blue underline on page numbers in my TOC, so I tweaked the code to exclude
any references within the range of the TOC. Here's resulting code that
seems to work well:

Sub FormatCrossReferences()
Dim aref As Field

' TocRangeStart and end will be set to numbers greater
' than -1 if there's a table of contents in the document
' Macro assumes 0 or 1 table of contents
' Macro will not format items within the range of the TOC
Dim TocRangeStart As Integer
TocRangeStart = -1
Dim TocRangeEnd As Integer
TocRangeEnd = -1
Dim TOCCollection As TablesOfContents
Set TOCCollection = ActiveDocument.TablesOfContents
If Not (TOCCollection Is Nothing) Then
Dim TOC As TableOfContents
Set TOC = TOCCollection.Item(1)
TocRangeStart = TOC.Range.Start
TocRangeEnd = TOC.Range.End
End If

For Each aref In ActiveDocument.Fields
If (aref.Type = wdFieldRef Or aref.Type = wdFieldPageRef) _
And (aref.Result.Start < TocRangeStart Or TocRangeEnd < _
aref.Result.End) Then
With aref.Result.Font
.Color = wdColorBlue
.Underline = wdUnderlineSingle
End With
End If
Next aref
End Sub
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top