Retaining "FileName" field after merging document

C

Cheddarbug10

In my primary document I have a "filename" field code in the footer. After I
complete the merge, the field code becomes static. Is there a way to keep
the field code in the footer?
 
P

Peter Jamieson

Well, sort of. You can
a. Put a { Filename } field into a blank document, bookmark it as fname and
save it as (say) c:\mydocs\fname.doc
b. In your mail merge main document use an

{ INCLUDETEXT "c:\\mydocs\fname.doc" fname }

c. Do the merge. The includetext survives. if you update the includetext
fields, you shoud see the file name of the container document.

The problem of course is that you are left with one or more links to an
external document. I'd probably unlink all the INCLUDETEXT fields a.s.a.p

To avoid that, I'd probably go for something more like
a. use a distinctive { PAGE } field such as
{ PAGE \#FILENAME }
b. merge
c. use Edit/Replace or a macro to display field codes and replace PAGE
\#FILENAME by FILENAME
d. update fields.
 
C

Cheddarbug10

Thanks for replying.

Well, the first option is a bit cumbersome. The 2nd option I've tried. The
problem I'm having is that the "merged" document has many sections and the
Find/Replace was only finding text in the current section. Any clues as to
how I can make a find/replace in footers with many sections?

Stephanie~
 
P

Peter Jamieson

I'd try a bit of VBA code as follows. See Graham Mayor's page for how to
install it:

http://www.gmayor.com/installing_macro.htm

I think this will do:

Sub UpdateAllFields()

Dim objRange As Word.Range
Dim objField As Word.Field
For Each objRange In ActiveDocument.StoryRanges
Call ProcessFields(objRange)
While Not (objRange.NextStoryRange Is Nothing)
Set objRange = objRange.NextStoryRange
For Each objField In objRange.Fields
Call ProcessFields(objRange)
Next
Wend
Next
Set objRange = Nothing
End Sub

Sub ProcessFields(objRange As Range)
Dim objField As Word.Field
For Each objField In objRange.Fields
' This has to be an exact match
If UCase(Trim(objField.Code.Text)) = "PAGE \#FILENAME" Then
objField.Code.Text = " FILENAME "
objField.Update
End If
Next
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