Reply
 
Thread Tools Display Modes
  #1   Report Post  
Posted to microsoft.public.word.mailmerge.fields
Slash Slash is offline
external usenet poster
 
Posts: 1
Default Preserve Bookmark in Mailmerge

I am using a system that interfaces with MS/Word. The system allows me to
create some mailmerge documents.

The first document is a source document that holds a single merge field on a
line as the only content.

{ MERGEFIELD Reference_Number }

When this resolves it creates a document C:\TEMP\\LAP\\INTDLIFE.DOC
containing the value of a database field called Reference_Number.

A second document (also a mailmerge), pulls in the first document using

{ INCLUDETEXT "c:\\temp\\LAP\\INTDLIFE.DOC" }

Now the problem is, when it includes the document it also includes the
paragraph marker following the mergefield, and thus in the final resolved
document their is an unwanted line break inserted, resulting in a blank line.

I have read that this can be removed by defining a bookmark in the original
document containing the merge field, by defining the bookmark over the
mergefield but excluding the paragraph marker. Then in the second document
expanding the INCLUDETEXT as follows

{ INCLUDETEXT "c:\\temp\\LAP\\INTDLIFE.DOC" BookmarkName }

I tried this however it returned the message "Bookmark not found" or wording
similar to this. This being because when the first document resolves into c:\
\temp\\LAP\\INTDLIFE.DOC, the bookmark is not preserved into that resolved
document. I understand this is due to the bookmark name requiring to be
unique, however I have seen some code posted elsewhere that duplicates the
bookmark into the resolved document. I just cannot figure out how to do this
though in my situation.

I have no direct control over the documents other than creating them. The
system actually automates the production of the final document initiating all
the various steps of the mailmerge processes along the way. I am hoping it
is possible to insert some VBA in the initial document containing the merge
field, so that the bookmark is preserved in its resolved document, so that
the document containing the INCLUDETEXT can find it. Is this possible?

Many thanks

Stephen Lasham

  #2   Report Post  
Posted to microsoft.public.word.mailmerge.fields
Doug Robbins - Word MVP Doug Robbins - Word MVP is offline
external usenet poster
 
Posts: 8,832
Default Preserve Bookmark in Mailmerge

' 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).Delet e

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(wdActiveEndSectionNum ber))

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).Delet e

bmrange.Characters(1).Delete

Loop

End With


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

"Slash" u36791@uwe wrote in message news:76ff84b94c64f@uwe...
I am using a system that interfaces with MS/Word. The system allows me to
create some mailmerge documents.

The first document is a source document that holds a single merge field on
a
line as the only content.

{ MERGEFIELD Reference_Number }

When this resolves it creates a document C:\TEMP\\LAP\\INTDLIFE.DOC
containing the value of a database field called Reference_Number.

A second document (also a mailmerge), pulls in the first document using

{ INCLUDETEXT "c:\\temp\\LAP\\INTDLIFE.DOC" }

Now the problem is, when it includes the document it also includes the
paragraph marker following the mergefield, and thus in the final resolved
document their is an unwanted line break inserted, resulting in a blank
line.

I have read that this can be removed by defining a bookmark in the
original
document containing the merge field, by defining the bookmark over the
mergefield but excluding the paragraph marker. Then in the second
document
expanding the INCLUDETEXT as follows

{ INCLUDETEXT "c:\\temp\\LAP\\INTDLIFE.DOC" BookmarkName }

I tried this however it returned the message "Bookmark not found" or
wording
similar to this. This being because when the first document resolves into
c:\
\temp\\LAP\\INTDLIFE.DOC, the bookmark is not preserved into that resolved
document. I understand this is due to the bookmark name requiring to be
unique, however I have seen some code posted elsewhere that duplicates the
bookmark into the resolved document. I just cannot figure out how to do
this
though in my situation.

I have no direct control over the documents other than creating them. The
system actually automates the production of the final document initiating
all
the various steps of the mailmerge processes along the way. I am hoping
it
is possible to insert some VBA in the initial document containing the
merge
field, so that the bookmark is preserved in its resolved document, so that
the document containing the INCLUDETEXT can find it. Is this possible?

Many thanks

Stephen Lasham



  #3   Report Post  
Posted to microsoft.public.word.mailmerge.fields
Slash via OfficeKB.com Slash via OfficeKB.com is offline
external usenet poster
 
Posts: 3
Default Preserve Bookmark in Mailmerge

Thanks, this is the same Macro as I had found in another thread, but it
doesn't have a macro name to it, and I do not know how to cause this to auto
run when the application I mentioned does all the mailmerge stuff. I am
guessing this needs to be encompassed in a function or subroutine, with a
begin sub and end sub statement, and that this will be a special subroutine
that word recongises to auto run, is this the case?

Doug Robbins - Word MVP wrote:
' 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).Delet e

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(wdActiveEndSectionNu mber))

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).Delet e

bmrange.Characters(1).Delete

Loop

End With

I am using a system that interfaces with MS/Word. The system allows me to
create some mailmerge documents.

[quoted text clipped - 50 lines]

Stephen Lasham


--
Message posted via OfficeKB.com
http://www.officekb.com/Uwe/Forums.a...merge/200708/1

  #4   Report Post  
Posted to microsoft.public.word.mailmerge.fields
Slash via OfficeKB.com Slash via OfficeKB.com is offline
external usenet poster
 
Posts: 3
Default Preserve Bookmark in Mailmerge

The above routine also appears to handle in the middle, the creation of the
new document, but this is done by the application I referred to. So I am
guessing this script isn't going to work for me. Would you agree?

Doug Robbins - Word MVP wrote:
' 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).Delet e

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(wdActiveEndSectionNu mber))

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).Delet e

bmrange.Characters(1).Delete

Loop

End With

I am using a system that interfaces with MS/Word. The system allows me to
create some mailmerge documents.

[quoted text clipped - 50 lines]

Stephen Lasham


--
Message posted via OfficeKB.com
http://www.officekb.com/Uwe/Forums.a...merge/200708/1

  #5   Report Post  
Posted to microsoft.public.word.mailmerge.fields
Doug Robbins - Word MVP Doug Robbins - Word MVP is offline
external usenet poster
 
Posts: 8,832
Default Preserve Bookmark in Mailmerge

I doubt that you should be using mailmerge for this application.

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

"Slash via OfficeKB.com" u36791@uwe wrote in message
news:7701c3c1788b0@uwe...
The above routine also appears to handle in the middle, the creation of
the
new document, but this is done by the application I referred to. So I am
guessing this script isn't going to work for me. Would you agree?

Doug Robbins - Word MVP wrote:
' 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).Delet e

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(wdActiveEndSectionN umber))

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).Delet e

bmrange.Characters(1).Delete

Loop

End With

I am using a system that interfaces with MS/Word. The system allows me
to
create some mailmerge documents.

[quoted text clipped - 50 lines]

Stephen Lasham


--
Message posted via OfficeKB.com
http://www.officekb.com/Uwe/Forums.a...merge/200708/1





  #6   Report Post  
Posted to microsoft.public.word.mailmerge.fields
Peter Jamieson Peter Jamieson is offline
external usenet poster
 
Posts: 4,582
Default Preserve Bookmark in Mailmerge

This makes it pretty hard to do.

The only way I can think of is to use Word's MailMerge Events to alter the
output document before the calling process saves it. It is certainly worth a
try.

In your Mail Merge Main Document you will need
a. to add a Class Module, e.g. in the VBA Editor, with the Mail Merge Main
document open, use Insert-Class Module
b. In the module's properties (you may see these in a window at the bottom
left) change the module name to ECM (short for Event Class Module)
c. In that module, insert the following code:

Public WithEvents App As Word.Application

Private Sub App_MailMergeAfterMerge(ByVal Doc As Document, ByVal DocResult
As Document)
ActiveDocument.Range(Start:=0, End:=ActiveDocument.Range.End -
1).Bookmarks.Add "bkmbody"
End Sub

d. Create an ordinary module (e.g. Insert-Module and insert the following
code:

Public X As ECM
Sub Register_Event_Handler()
Set X = New ECM
Set X.App = Word.Application
End Sub

Sub Unregister_Event_Handler()
Set X.App = Nothing
Set X = Nothing
End Sub

Sub autoopen()
Call Register_Event_Handler
End Sub

Sub autoclose()
Call Unregister_Event_Handler
End Sub

e. save and close the Mail Merge Main document.

When it is opened, the mail merge events should be enabled , so that when
the calling process finishes merging, the bookmark should be set.

However, be aware that
1. the calling applicaiton needs to be able to open documents that contain
macros without a dialog popping up
2. the calling applicaiton probably needs to /close/ the document for the
application-wide event handler to close down properly
3. you may need to tweak the event handling code to deal with, e.g. a
situaition where the merge fails, etc. In other words, this is just a
starting point.

--

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

"Slash" u36791@uwe wrote in message news:76ff84b94c64f@uwe...
I am using a system that interfaces with MS/Word. The system allows me to
create some mailmerge documents.

The first document is a source document that holds a single merge field on
a
line as the only content.

{ MERGEFIELD Reference_Number }

When this resolves it creates a document C:\TEMP\\LAP\\INTDLIFE.DOC
containing the value of a database field called Reference_Number.

A second document (also a mailmerge), pulls in the first document using

{ INCLUDETEXT "c:\\temp\\LAP\\INTDLIFE.DOC" }

Now the problem is, when it includes the document it also includes the
paragraph marker following the mergefield, and thus in the final resolved
document their is an unwanted line break inserted, resulting in a blank
line.

I have read that this can be removed by defining a bookmark in the
original
document containing the merge field, by defining the bookmark over the
mergefield but excluding the paragraph marker. Then in the second
document
expanding the INCLUDETEXT as follows

{ INCLUDETEXT "c:\\temp\\LAP\\INTDLIFE.DOC" BookmarkName }

I tried this however it returned the message "Bookmark not found" or
wording
similar to this. This being because when the first document resolves into
c:\
\temp\\LAP\\INTDLIFE.DOC, the bookmark is not preserved into that resolved
document. I understand this is due to the bookmark name requiring to be
unique, however I have seen some code posted elsewhere that duplicates the
bookmark into the resolved document. I just cannot figure out how to do
this
though in my situation.

I have no direct control over the documents other than creating them. The
system actually automates the production of the final document initiating
all
the various steps of the mailmerge processes along the way. I am hoping
it
is possible to insert some VBA in the initial document containing the
merge
field, so that the bookmark is preserved in its resolved document, so that
the document containing the INCLUDETEXT can find it. Is this possible?

Many thanks

Stephen Lasham


  #7   Report Post  
Posted to microsoft.public.word.mailmerge.fields
Peter Jamieson Peter Jamieson is offline
external usenet poster
 
Posts: 4,582
Default Preserve Bookmark in Mailmerge

This makes it pretty hard to do.

By "this" I meant:

I have no direct control over the documents other than creating them.
The
system actually automates the production of the final document initiating
all
the various steps of the mailmerge processes along the way.


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

"Peter Jamieson" wrote in message
...
This makes it pretty hard to do.

The only way I can think of is to use Word's MailMerge Events to alter the
output document before the calling process saves it. It is certainly worth
a try.

In your Mail Merge Main Document you will need
a. to add a Class Module, e.g. in the VBA Editor, with the Mail Merge Main
document open, use Insert-Class Module
b. In the module's properties (you may see these in a window at the bottom
left) change the module name to ECM (short for Event Class Module)
c. In that module, insert the following code:

Public WithEvents App As Word.Application

Private Sub App_MailMergeAfterMerge(ByVal Doc As Document, ByVal DocResult
As Document)
ActiveDocument.Range(Start:=0, End:=ActiveDocument.Range.End -
1).Bookmarks.Add "bkmbody"
End Sub

d. Create an ordinary module (e.g. Insert-Module and insert the
following code:

Public X As ECM
Sub Register_Event_Handler()
Set X = New ECM
Set X.App = Word.Application
End Sub

Sub Unregister_Event_Handler()
Set X.App = Nothing
Set X = Nothing
End Sub

Sub autoopen()
Call Register_Event_Handler
End Sub

Sub autoclose()
Call Unregister_Event_Handler
End Sub

e. save and close the Mail Merge Main document.

When it is opened, the mail merge events should be enabled , so that when
the calling process finishes merging, the bookmark should be set.

However, be aware that
1. the calling applicaiton needs to be able to open documents that contain
macros without a dialog popping up
2. the calling applicaiton probably needs to /close/ the document for the
application-wide event handler to close down properly
3. you may need to tweak the event handling code to deal with, e.g. a
situaition where the merge fails, etc. In other words, this is just a
starting point.

--

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

"Slash" u36791@uwe wrote in message news:76ff84b94c64f@uwe...
I am using a system that interfaces with MS/Word. The system allows me to
create some mailmerge documents.

The first document is a source document that holds a single merge field
on a
line as the only content.

{ MERGEFIELD Reference_Number }

When this resolves it creates a document C:\TEMP\\LAP\\INTDLIFE.DOC
containing the value of a database field called Reference_Number.

A second document (also a mailmerge), pulls in the first document using

{ INCLUDETEXT "c:\\temp\\LAP\\INTDLIFE.DOC" }

Now the problem is, when it includes the document it also includes the
paragraph marker following the mergefield, and thus in the final resolved
document their is an unwanted line break inserted, resulting in a blank
line.

I have read that this can be removed by defining a bookmark in the
original
document containing the merge field, by defining the bookmark over the
mergefield but excluding the paragraph marker. Then in the second
document
expanding the INCLUDETEXT as follows

{ INCLUDETEXT "c:\\temp\\LAP\\INTDLIFE.DOC" BookmarkName }

I tried this however it returned the message "Bookmark not found" or
wording
similar to this. This being because when the first document resolves
into c:\
\temp\\LAP\\INTDLIFE.DOC, the bookmark is not preserved into that
resolved
document. I understand this is due to the bookmark name requiring to be
unique, however I have seen some code posted elsewhere that duplicates
the
bookmark into the resolved document. I just cannot figure out how to do
this
though in my situation.

I have no direct control over the documents other than creating them.
The
system actually automates the production of the final document initiating
all
the various steps of the mailmerge processes along the way. I am hoping
it
is possible to insert some VBA in the initial document containing the
merge
field, so that the bookmark is preserved in its resolved document, so
that
the document containing the INCLUDETEXT can find it. Is this possible?

Many thanks

Stephen Lasham



  #8   Report Post  
Posted to microsoft.public.word.mailmerge.fields
Slash via OfficeKB.com Slash via OfficeKB.com is offline
external usenet poster
 
Posts: 3
Default Preserve Bookmark in Mailmerge

Thanks for this, it seems the application is using MS/Word VBA code behind
the scenes as when I added this in it caused the VBA editor to pop up with
all the applications code showing, very interesting. If I now look at the
two sets of solutions you have provided for me I may be able to see where I
can adjust the suppliers code, and then send them though some changes.

Thank you so much for the time you have given, it is greatly appreciated.

Stephen

Peter Jamieson wrote:
This makes it pretty hard to do.


By "this" I meant:

I have no direct control over the documents other than creating them.
The
system actually automates the production of the final document initiating
all
the various steps of the mailmerge processes along the way.


This makes it pretty hard to do.

[quoted text clipped - 111 lines]

Stephen Lasham


--
Message posted via OfficeKB.com
http://www.officekb.com/Uwe/Forums.a...merge/200708/1

Reply
Thread Tools
Display Modes

Posting Rules

Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump

Similar Threads
Thread Thread Starter Forum Replies Last Post
how to preserve the bookmark while using mailmerge feature sanjeev Mailmerge 3 July 31st 07 02:40 PM
My noteref to valid bookmark says "Error! Bookmark not defined."? jchilders_98 Microsoft Word Help 3 October 5th 06 02:23 PM
The Insert Bookmark box shouldnt vanish after adding a bookmark. RogerKni Microsoft Word Help 4 September 26th 06 03:13 PM
Word should preserve cycles of track changes Doug at PBS&J Microsoft Word Help 1 January 18th 06 05:10 PM
Preserve Formatting of TOC Ted Microsoft Word Help 11 January 26th 05 03:49 PM


All times are GMT +1. The time now is 07:48 PM.

Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright ©2004-2024 Microsoft Office Word Forum - WordBanter.
The comments are property of their posters.
 

About Us

"It's about Microsoft Word"