Another access-word mailmerge question

M

Mike

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
 
D

Doug Robbins

Try without that construction. The result of the merge will almost (if not
completely) certainly end up as the active document.

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

Mike

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
 
D

Doug Robbins

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)

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

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