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 / Mailmerge and Fax / January 2005

Tip: Looking for answers? Try searching our database.

Keep form fields after protected mailmerge

Thread view: 
Enable EMail Alerts  Start New Thread
Thread rating: 
beabvo - 26 Jan 2005 09:01 GMT
Hi,

I´m making several mailmerge templates in Word2000.
Some of these templates are being protected after mailmerging with a custom
made application.

In some of these documents I also use form fields so my users can add
information.
But, after the mailmerge, the form fields are also being protected, which is
not acceptable for my users (and me).

Can someone help me fix my problem. I´m trying to keep the documents as
simple as possible, so the support can be kept simple as well.

tx
Doug Robbins - 26 Jan 2005 10:13 GMT
These two features of Word are not compatible.  For someone who needed to do
the same thing, I created the following macro that will "preserve" =
re-create the bookmarks in mailmerge.  Once the locations of the formfields
are identified by the bookmarks, it's just a simple bit of code to add back
the formfields.

' Throwaway Macro created by Doug Robbins to "preserve" bookmarks during a
MailMerge

'

Dim abm As Bookmark, bmrange As Range, i As Long, Result As Document, j As
Long, k As Long, linkrange As Range, linktarget As String

Dim Source As Document

Set Source = ActiveDocument

i = 1

For j = 1 To Source.MailMerge.DataSource.RecordCount

   For Each abm In ActiveDocument.Range.Bookmarks

       System.PrivateProfileString("c:\bookmarks.txt", "bookmarkNames",
"bookmark" & i) = abm.Name & Format(j)

       i = i + 1

   Next

Next j

For Each abm In ActiveDocument.Range.Bookmarks

   abm.Range.InsertBefore "#"

   abm.Range.InsertAfter "#"

Next

With ActiveDocument.MailMerge

   .Destination = wdSendToNewDocument

   .Execute

End With

Set Result = ActiveDocument

k = 1

Selection.HomeKey wdStory

Selection.Find.ClearFormatting

With Selection.Find

   Do While .Execute(FindText:="#*#", MatchWildcards:=True,
Wrap:=wdFindContinue, Forward:=True) = True

       Set bmrange = Selection.Range

       bmrange.Characters(bmrange.Characters.Count).Delete

       bmrange.Characters(1).Delete

       Result.Bookmarks.Add System.PrivateProfileString("c:\bookmarks.txt",
"bookmarkNames", "bookmark" & k), bmrange

       k = k + 1

   Loop

End With

For i = 1 To Result.Hyperlinks.Count

   linktarget = Result.Hyperlinks(i).SubAddress

   Set linkrange = Result.Hyperlinks(i).Range

   linkrange.Select

   linktarget = linktarget &
Format(Selection.Information(wdActiveEndSectionNumber))

   Result.Hyperlinks.Add Result.Hyperlinks(i).Range, "", linktarget

Next i

Source.Activate

Selection.HomeKey wdStory

Selection.Find.ClearFormatting

With Selection.Find

   Do While .Execute(FindText:="#*#", MatchWildcards:=True,
Wrap:=wdFindContinue, Forward:=True) = True

       Set bmrange = Selection.Range

       bmrange.Characters(bmrange.Characters.Count).Delete

       bmrange.Characters(1).Delete

   Loop

End With

Signature

Please respond to the Newsgroup for the benefit of others who may be
interested.   Questions sent directly to me will only be answered on a paid
consulting basis.

Hope this helps,
Doug Robbins - Word MVP

> Hi,
>
[quoted text clipped - 13 lines]
>
> tx
 
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.