View Single Post
  #8   Report Post  
Posted to microsoft.public.word.mailmerge.fields
Peter Jamieson Peter Jamieson is offline
external usenet poster
 
Posts: 4,582
Default MsgBox during merge

I need to know how to execute a message box when the merge is complete.

It seems to me that if you can start the merge with VBA and you only need
the message when the merge is complete, then you can use the method I
suggested earlier where you pop up a MsgBox after the .Execute

The only reason I suggested that that might not work after all was because
it seemed you were suggesting that you wanted the message to pop up
mid-merge, in which case you would have to know the record count.

But if all you want to do is be able to put something in your Mail Merge
Main Document (or let your users put that something in) that will let your
VBA decide whether or not to pop up that MsgBox, then you could put in
almost anything that is unambiguous, easily detected in VBA, does not result
in any output. It could be a bookmark with a certain name, for example.

If you want users to be able to specify at the beginning of the merge
whether they want a message box at the end, you could for example insert an
ASK field that uses the \o switch (so it only asks once at the beginning of
the merge) and sets a bookmark with a special name that you specify, e.g.
"tellmewhenitsallover" or some such.

Then in your VBA, after the .Exceute, you could
a. check for the existence of that tellmewhenitsallover bookmark in the
MailMerge
b. if it isn't there, don't prompt
c. if it is there, check its value. If it's y or Y prompt. Otherwise, don't
prompt.

For that you would need something like the following (change the bookmark
name etc. to suit).

Sub MergeAndOptionalMsgbox()
Dim objMMMD As Word.Document

Set objMMMD = ActiveDocument
With objMMMD.MailMerge
' set the destination you want
.Destination = wdSendToNewDocument
With .DataSource
.FirstRecord = wdDefaultFirstRecord
.LastRecord = wdDefaultLastRecord
End With
.Execute Pause:=False
End With
On Error Goto bookmarknotfound
If ucase(trim(objMMMD.Bookmarks("tellmewhenitsover"). Range.Text)) = "Y" Then
MsgBox "Pause!"
End If
bookmarknotfound:
Err.Clear
On Error Goto 0

End Sub

If you need to make it easy for the user to insert such an Ask, you could
consider using an AutoText or another bit of VBA code to insert it.

Peter Jamieson

"Kathy Webster" wrote in message
...
I don't understand. I don't need to know how many records there are. I have
that covered. I need to know how to execute a message box when the merge is
complete.

"Peter Jamieson" wrote in message
...
I want the merge to start and process up to a certain point, then stick
in a Message along the way. I can start the merge with VBA, no problem.
I'm having trouble interceding midway through the mergeform with a
message box.


OK, in that case the VBA that does . Execute then Msgbox that I suggested
clearly isn't going to work.

Identifying the last record in the merge is not a problem for me...I'm
good with that part)


What options are available to you on this front, before the merge is
initiated? Can you use VBA to determine how many records are about to be
merged - e.g. if the source is Access or Excel, you might be able to
issue a SQL query via ADo to detrmine the record count? Or maybe you
could iterate through MailMerge.DataSource in VBA once without actually
merging, just to establish how many records there are?

Peter Jamieson
"Kathy Webster" wrote in message
...
Is there a way to put code somewhere in the merge form itself

There are several ways to start a merge. What is your understanding of
a "Merge form" ?

I don't have a problem starting the merge. I have a problem interceding
once the merge has started. A Merge Form, in my definition, is started
through Tools, letters and mailings, creating the main document and the
datasource. I am refering to the Main Document when I refer to
"Mergeform." It has {MERGEFIELD} codes in it, as well as Word field
codes, such as{FILLIN}, {ASK}, etc.

I want the merge to start and process up to a certain point, then stick
in a Message along the way. I can start the merge with VBA, no problem.
I'm having trouble interceding midway through the mergeform with a
message box.