Using Access 2000, and Word 2000, I perform the following steps:
Export a query as a text file for mail merge.
Open a Word document.
Execute a mail merge using the Word document and the text file as the data source.
The export function seems to work OK every time. But at least half the time the merge function fails. This happens both on my machine and on another user’s machine. Usually the error is 5852 “Requested Object Not Available” but I also get error 462.
Here is part of the merge code:
Dim objWordDoc As Word.Document
Dim WordApp As Word.Application
Dim strTempName As String
Dim strFileSaveName As String
Dim strTemplateName As String
strTemplateName = "\\myshare\myfolder\MyLetterForMailMerge.doc"
Set objWordDoc = GetObject(strTemplateName, "Word.Document")
objWordDoc.Application.Visible = True
objWordDoc.MailMerge.OpenDataSource Name:= _
"\\myshare\myfolder\mailmergedata.txt”
, ConfirmConversions:=False, ReadOnly:=False, LinkToSource:=True, _
AddToRecentFiles:=False, PasswordDocument:="", PasswordTemplate:="", _
WritePasswordDocument:="", WritePasswordTemplate:="", Revert:=False, _
Format:=wdOpenFormatAuto, Connection:="", SQLStatement:="", SQLStatement1 _
:=""
With ActiveDocument.MailMerge
.Destination = wdSendToNewDocument
.MailAsAttachment = False
.MailAddressFieldName = ""
.MailSubject = ""
.SuppressBlankLines = True
With .DataSource
.FirstRecord = wdDefaultFirstRecord
.LastRecord = wdDefaultLastRecord
End With
.Execute Pause:=True
End With
=================
Then there is additional code where I save the document and close the template. This also seems to be OK.
Because the problem does not happen 100% of the time, could it be that the merge code is executing while the template doc is still busy opening? And if so, how can I avoid that?
If this can’t be solved, I’ll give up on mail merge and instead build a new Word doc using VBA and inserting data by looping through the query recordset.
I recall seeing documentation on this but I can’t find a thing now that I may need it, so I’ll consider giving points for a steer toward any resources that explain how this can be done.
by: bruintjePosted on 2003-05-28 at 22:12:03ID: 8603469
Hello Vhpcomp,
erForMailM erge.dot" emplateNam e)
erForMailM erge.dot"
emplateNam e)
ataSource Name:="\\myshare\myfolder\ mailmerged ata.txt", _ _ _ _
just a thought
the errors seems to indicate something being unavailable while being opened, this could be the doc or the txt with the first seemingly the one that throws things up
what happens if you rename your template to a real template with the dot extension and derive new documents form it like
strTemplateName = "\\myshare\myfolder\MyLett
Set WordApp = GetObject(, "Word.Application")
Set objWordDoc = WordApp.Documents.Add(strT
at least you can now be sure the template is not in use when calling it just removing a variable
also build in some errorhandling for debugging purposes
On Error GoTo Errhandler
strTemplateName = "\\myshare\myfolder\MyLett
Set WordApp = GetObject(, "Word.Application")
WordApp.Visible = True
Set objWordDoc = WordApp.Documents.Add(strT
objWordDoc.MailMerge.OpenD
ConfirmConversions:=False,
ReadOnly:=False, _
LinkToSource:=True, _
AddToRecentFiles:=False, _
PasswordDocument:="", _
PasswordTemplate:="", _
WritePasswordDocument:="",
WritePasswordTemplate:="",
Revert:=False, _
Format:=wdOpenFormatAuto, _
Connection:="", _
SQLStatement:="", _
SQLStatement1:=""
With ActiveDocument.MailMerge
.Destination = wdSendToNewDocument
.MailAsAttachment = False
.MailAddressFieldName = ""
.MailSubject = ""
.SuppressBlankLines = True
With .DataSource
.FirstRecord = wdDefaultFirstRecord
.LastRecord = wdDefaultLastRecord
End With
.Execute Pause:=True
End With
NextMerge:
'goto the next document in the merge
Resume Next
Errhandler:
'just print the line in the debug window
Debug.Print Err.Description & " "; Err.Number
Resume NextMerge