Re: Can't set display text for hyperlink created in merged Word doc from Excel data source

Tech-Archive recommends: Speed Up your PC by fixing your registry



Also, Jay Freedman posted this link to some simpler VBA..

http://groups.google.com/group/microsoft.public.word.vba.general/browse_thread/thread/c3b00b39e9cd1539/84e7cc85e7b0ad77?hl=en&lnk=st&q=hyperlinks+replace+macro+group%3Amicrosoft.public.word.*

--
Peter Jamieson
http://tips.pjmsn.me.uk

"Peter Jamieson" <pjj@xxxxxxxxxxxxxxxxxxxxxxxxxx> wrote in message news:OaZWgSC2IHA.5560@xxxxxxxxxxxxxxxxxxxxxxx
The only way I know is to use VBA to modify the display text, either during the merge or as a post-merge operation.

I only have the following code for doing it during the merge, and I haven't tested this code for some time. To see it working

1. Create a new document, connect it to your data source, and insert one
merge field and a bookmark named "mybm"

2. Open up the VBA Editor and
a. insert a class module.
b. name it EventClassModule in the properties box
c. Copy the following code into the module:

Public WithEvents App As Word.Application

Private Sub App_MailMergeBeforeRecordMerge(BYVal Doc As Document, Cancel As
Boolean)
Dim dt as String
Dim lt as String
Dim h as Hyperlink
Dim r as Range

' set the range variable to our placeholder bookmark
Set r = Doc.Bookmarks("mybm").Range

' delete any existing text (this is needed for records after record 1)
r.Text = ""

' construct the link text that you want. I'm assuming your data source
' has fields called idfield and namefield.
lt = http://www.testsite.com?id= & _
Doc.MailMerge.DataSource.DataFields("idfield") & _
"&name=" & _
Doc.MailMerge.DataSource.DataFields("namefield")
' set up the display text that you want. If it should be the same
' as the link text, do that:
dt = lt

' insert the hyperlink you want
Set h = Doc.Hyperlinks.Add(Anchor:=r, Address=lt, TextToDisplay:=dt)

' Set mybm to "cover" the inserted link so it is easy to delete the old hyperlink

Doc.Bookmarks.Add Name:="mybm", Range:=h.Range

Set r = Nothing
Set h = Nothing

End Sub

3. Insert an ordinary module (the name does not matter) and insert the
following code:

Dim x As New EventClassModule

Sub autoopen()
Set x.App = Word.Application
End Sub

4. Save and close the document. Open it to trigger the autoopen, then
perform a test merge.

NB, if you start changing the code you may find that you need to re-run your
autoopen code again, and/or save/close/open the document.

--
Peter Jamieson
http://tips.pjmsn.me.uk

"FUBARinSFO" <file1303@xxxxxxxxx> wrote in message news:20cb7131-2120-4666-a9d2-a7242ef26362@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Hi:

Merging fields from an Excel 2003 data source to Word 2003 document,
you can create active links (hyperlinks) into the merged document, but
evidently can't set the display text of the link -- the link displays
as itself. This is especially ugly if the path is a network mapped
drive.

Thus, with the ugly URL below, there's no evident way to dress it up
with 'text to display' separate from the URL itself, as far as I've
been able to determine.

If anybody has found a way to do this, it would be very helpful.

-- Roy Zider

Source URL (SrcURL field):
G:\\ABC Email\\Exported\\JLB 2008-06-24\\Chron - extracted\\ABC
Estate_ Contact information.eml

Field codes in merge template:
{HYPERLINK "{MERGEFIELD "SrcURL"}"\@ MERGEFORMAT }

Active link in merged document:
\\k7n\g\ABC Email\Exported\JLB 2008-06-24\Chron - extracted\ABC
Estate_ Contact information.eml

Also annoying is the fact that even if the Excel source document has
active hyperlinks in a field, the merge of this field will transfer
only as text, not as an active hyperlink. So a separate field in
Excel has to be created with the path and file name with double \\ to
generate the \ separators, and use that as the source rather than the
hyperlink itself.

References:
http://homepage.swissonline.ch/cindymeister/MergFram.htm
http://www.gmayor.com/formatting_word_fields.htm


.



Relevant Pages