Problems starting Word from Excel VBA

J

jan120253

I have this code (as part of a long automation code, that simulates mailmerge by substituting bookmarks in a Word template with information from a spreadsheet):

On Error Resume Next
Set Wdapp = GetObject(, "Word.application")
If Err.Number <> 0 Then
Set Wdapp = CreateObject("Word.Application")
End If

It was made for Excel 2003, and now - after having upgraded to 2007 it does not work. If an instance of Word is already open, when I run the code, it Works as it is supposed, but if Word is not already started, it doesn't. So apparently the
Set Wdapp = CreateObject("Word.Application") par does not execute.

I have references to

Visual Basic for Applications
Microsoft Excel 12.0 Object Library
OLE Automation
Microsoft Office 12.0 Object Library
Microsoft Word 12.0 Object Library
Microsoft Office 12 Authorization Control 1.0 Type Library
Microsoft ActiveX Data Objects 2.8 Library
Microsoft ActiveX Data Objects Recordset 6.0 Library

What am I missing here?

Jan
 
C

Claus Busch

Hi Jan,

Am Thu, 3 Apr 2014 03:50:43 -0700 (PDT) schrieb (e-mail address removed):
It was made for Excel 2003, and now - after having upgraded to 2007 it does not work. If an instance of Word is already open, when I run the code, it Works as it is supposed, but if Word is not already started, it doesn't. So apparently the
Set Wdapp = CreateObject("Word.Application") par does not execute.

you have to open an existing document or to add a new document:

Set ObjWord = CreateObject("Word.Application")

With ObjWord
.Visible = True
' .documents.Open "E:\Excel_NG\Freigaben bei OneDrive.docx"
.documents.Add
End With


Regards
Claus B.
 
J

jan120253

Thank you. But why did it Work in 2003 then? Or is this a new thing?

Jan



Den torsdag den 3. april 2014 13.06.54 UTC+2 skrev Claus Busch:
 
G

GS

GetObject("Word.Application") hijacks a running instance of the
application, and so if Word is not running then your reference *Is
Nothing*!

CreateObject("Word.Application") starts an automated instance of Word
if it's installed on the machine. If not installed then your reference
*Is Nothing*!

I don't see where you check to see that the instance of Word you want
to use actually exists...


Dim oWD As Object

Set oWD = GetObject("Word.Application")
If oWD Is Nothing Then CreateObject("Word.Application")

If Not oWD Is Nothing Then
'if you got here then
'you have a fully qualified ref
'to a running instance of Word,
'so do stuff!
End If

--
Garry

Free usenet access at http://www.eternal-september.org
Classic VB Users Regroup!
comp.lang.basic.visual.misc
microsoft.public.vb.general.discussion
 

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