Still celebrating National IT Professionals Day with 3 months of free Premium Membership. Use Code ITDAY17

x
?
Solved

Running Word Mail Merge from Access opens 2 emtpy instances of Word

Posted on 2016-10-28
3
Medium Priority
?
46 Views
Last Modified: 2016-10-28
Hello - I'm having a problem running Word mail merge from Access, using the code below. This routine is kicked off from a command button; when the users click this button the 1st time, 2 empty instances of Word appear, with no template doc or mail merge result doc in either one. Then they click the button a second time, and a 3rd instance of Word comes up, with the mail merge result doc.

What's really driving me crazy is that *I* am not having the problem when I run on my pc, but all the users are.

I will admit to not knowing how to reference the original application instance, as opposed to the mail merge result instance. So when I close the original instance, and make the result instance visible, I might not be doing that in the best way. But why would it have the problem on the 1st execution, and not the 2nd?

Everybody is running Office 2003 on Windows 7; some (me included) have 4GB RAM, most only have 2GB, but even the 4GB users are having this problem.

JUST NOW >>> one user just told me that he does not have the 2 instances problem when he closes Outlook before running the mail merge. This makes sense because they all have their Outlook message editor set to use Word, and I don't. If this is the problem, is there a work-around?

Thanks

The code:
'-- code before here strings together the Word mail merge templates folder path with the template file name, resulting in "strDocFullLoc"
Application.Echo True, "Starting Word..."
Set objWordApp = CreateObject("Word.Application")

Application.Echo True, "Opening mail merge template..."
Set objWordDoc = GetObject(strDocFullLoc, "Word.Document")

Application.Echo True, "Starting Mail Merge..."

'-- execute the merge
objWordDoc.MailMerge.Destination = wdSendToNewDocument
objWordDoc.MailMerge.Execute Pause:=False

'-- close the merge template (leaves the merge result doc open), show Word
Application.Echo True, "Closing mail merge template..."
objWordDoc.Close True
objWordApp.Visible = True

MsgBox "Mail Merge Complete", vbOKOnly, strMBTitle
0
Comment
Question by:mlagrange
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
3 Comments
 
LVL 34

Accepted Solution

by:
Norie earned 2000 total points
ID: 41863990
How does this work?
Const wdSendToNewDocument = 0

Dim objWordApp As Object
Dim objWordDoc As Object

    Application.Echo True, "Starting Word..."
    Set objWordApp = CreateObject("Word.Application")

    Application.Echo True, "Opening mail merge template..."
    Set objWordDoc = objWordApp.Documents.Open(strDocFullLoc)

    Application.Echo True, "Starting Mail Merge..."

    '-- execute the merge
    objWordDoc.MailMerge.Destination = wdSendToNewDocument
    objWordDoc.MailMerge.Execute Pause:=False

    '-- close the merge template (leaves the merge result doc open), show Word
    Application.Echo True, "Closing mail merge template..."
    objWordDoc.Close True
    objWordApp.Visible = True

    MsgBox "Mail Merge Complete", vbOKOnly, strMBTitle

Open in new window

0
 
LVL 120

Expert Comment

by:Rey Obrero (Capricorn1)
ID: 41863993
try commenting this line

Set objWordApp = CreateObject("Word.Application")

post back the result
0
 

Author Comment

by:mlagrange
ID: 41864230
Norie - that worked! Just the difference in that 1 doc open method?!
Rey - your suggestion worked as far as the merge, but I wasn't able to close the template and just show the mail merge result like I wanted.

Thank you both for your help
0

Featured Post

What Is Blockchain Technology?

Blockchain is a technology that underpins the success of Bitcoin and other digital currencies, but it has uses far beyond finance. Learn how blockchain works and why it is proving disruptive to other areas of IT.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

This article describes two methods for creating a combo box that can be used to add new items to the row source -- one for simple lookup tables, and one for a more complex row source where the new item needs data for several fields.
We live in a world of interfaces like the one in the title picture. VBA also allows to use interfaces which offers a lot of possibilities. This article describes how to use interfaces in VBA and how to work around their bugs.
In Microsoft Access, learn the trick to repeating sub-report headings at the top of each page. The problem with sub-reports and headings: Add a dummy group to the sub report using the expression =1: Set the “Repeat Section” property of the dummy…
With Microsoft Access, learn how to start a database in different ways and produce different start-up actions allowing you to use a single database to perform multiple tasks. Specify a start-up form through options: Specify an Autoexec macro: Us…

661 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question