Hi, I would like to perform a mailmerge by clicking a button on an
access form.
I have the following code:
Dim objWord As Word.Application
Dim objDoc As Word.Document
Set objWord = CreateObject("Word.Application")
Set objDoc = objWord.Documents.Open("E:\Rechtsbijstand Certificaten\RB
Certificaat Certificaat.doc")
With objWord
.Visible = True
.WindowState = wdWindowStateMaximize
End With
objDoc.MailMerge.OpenDataSource _
Name:=CurrentDb.Name, _
LinkToSource:=True, _
Connection:="TABLE TblSamenvoeg", _
SQLStatement:="Select * from [TblSamenvoeg] WHERE [PolisId]="&
Form_FormPolInv.PolisId.Value
objDoc.MailMerge.Execute
'because I get 2 documents, the original and the merged one I use:
If InStr(ActiveDocument.Name, "RB Certificaat Certificaat") = 0 Then
Set DocResult = Documents(1)
Else
Set DocResult = ActiveDocument
End If
objWord.ActiveDocument.PrintOut
But at the InStr-line I get an error (4248) saying that the document is
not there, but they are there!
So the merging goes OK, but the printing isn't done.
What is going wrong?
Thanks, Mike
Doug Robbins - 18 Jul 2005 17:15 GMT
Try without that construction. The result of the merge will almost (if not
completely) certainly end up as the active document.

Signature
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
> Hi, I would like to perform a mailmerge by clicking a button on an
> access form.
[quoted text clipped - 39 lines]
>
> Thanks, Mike
Mike - 19 Jul 2005 08:59 GMT
Thanks Doug, think that does it!
However I have another question, to close down I have (in addition to
the above) the following:
objDoc.Close wdDoNotSaveChanges
Set objDoc = Nothing
Set Word.Global = Nothing
objWord.Quit wdDoNotSaveChanges
Set objWord = Nothing
but Word is now being closed so fast that it can't handle the
printout-execution.
How can I delay this, just using a simple loop like:
for x = 1 to 100000000000000000000000000000
x=x+1
next x
or something or is there a better solution?
Thanks, Mike
Doug Robbins - 19 Jul 2005 11:56 GMT
Set the Background Print attribute to false
objWord.ActiveDocument.PrintOut Background: = False
That will prevent the next line of code from executing until the printing is
complete (spooled)

Signature
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
> Thanks Doug, think that does it!
>
[quoted text clipped - 21 lines]
>
> Thanks, Mike
Mike - 19 Jul 2005 12:41 GMT
Ok, another great solution, thanks for your help!
Mike