Problems starting Word from Excel VBA

  • Thread starter Thread starter jan120253
  • Start date Start date
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
 
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.
 
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:
 
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
 
Back
Top