Mail Merge - Cannot get URL to Merge

N

Nick Giacobe

I am using Excel 2002 SP2 for the data source, and Word
2002 SP2 to merge into a document.

I am trying to get a URL to merge into the merged file.
However, when it does so - I get the text of the URL, but
no hyperlink underlining - all I get is the text.

I've tried the ALT-F9 trick to show the codes - and tried
to insert a merge field code into the URL line - but no
luck.

This can't be all that hard - anyone have any ideas?

TIA

-- Nick
 
P

Peter Jamieson

Here's something I posted a while back in response to a similar question...

You /may/ be able to get what you want using fields, and someone may come
along and suggest how to do that. But I think you will need to use VBA and
the mailmerge events.If you're familiar with VBA, I suggest you try the
following experiment. If you're familiar with Events, you can probably skip
some of this stuff.

The overview is as follows:
a. In your mail merge main document, you will have a bookmark named "mybm"
that specifies where you want the hyperlink to go
b. also in the document, you have a class module with a routine that
responds to the Mailmerge "Before Record Merge" event. This routine will
insert a hyperlink at the specified point, using data from the current
record in the data source
c. Also in the document, you have a module with an AutoOpen routine that
creates an instance of your class and initialises event handling.

I'm not a VBA expert so please don't regard the following code as
"polished" - you may need to add error handling and so on before it will all
work reliably for you or your users.

So...

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.
 
N

Nick Giacobe

That did the trick... of course, I had to merge the split
lines back together... and modify the code to meet my
variables/URL format, etc. There was one typo in your
code example -

Set h = Doc.Hyperlinks.Add(Anchor:=r, Address=lt,
textToDisplay:=dt)

should be

Set h = Doc.Hyperlinks.Add(Anchor:=r, Address:=lt,
TextToDisplay:=dt)

Other than that, it worked like a charm. I see that the
example you used assumes a base URL, then some variables
in the query (after the ?)... whereas all I'm trying to
do is import a full URL from the data source. You would
THINK that something as simple as what I'm doing wouldn't
require that complicated of a solution.

I'm curious to see what's in the next version of Word...

Thanks again.

-- Nick
 
P

Peter Jamieson

Hi Nick,

Glad it worked, and thanks for the feedback.
You would
THINK that something as simple as what I'm doing wouldn't
require that complicated of a solution.

I agree.
 
C

Cindy M -WordMVP-

Hi Nick (and all others with this problem who might think to
read this)

It took me a few days, but I believe I finally remember
what's going on here. This is a problem specific to Excel
data sources. Somehow, URL in an Excel cell comes across
into Word with some extra or missing character. I can't
recall the exact details.

But as a test, try exporting the Excel table to a delimited
text file. Or copy paste the table into a Word document. Now
use either (or both, if you care to test both) as a data
source in a test merge. Does the Hyperlink come across
correctly?
I am using Excel 2002 SP2 for the data source, and Word
2002 SP2 to merge into a document.

I am trying to get a URL to merge into the merged file.
However, when it does so - I get the text of the URL, but
no hyperlink underlining - all I get is the text.

Cindy Meister
INTER-Solutions, Switzerland
http://homepage.swissonline.ch/cindymeister (last update Sep
30 2003)
http://www.mvps.org/word

This reply is posted in the Newsgroup; please post any
follow question or reply in the newsgroup and not by e-mail
:)
 
P

Patty Day

Hi Nick,
Try select all, right click, and select update Hyperlink.

That may take care of your inactive hyperlinks.

patty
 

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