View Single Post
  #5   Report Post  
Posted to microsoft.public.excel.programming,microsoft.public.word.vba.general
Tom Ogilvy Tom Ogilvy is offline
external usenet poster
 
Posts: 27,285
Default Changing reference to Word in Excel project

I suspect there is more to your code than what you show. If you reference
an object in Word and it is not fully qualified, then you can create a
non-releasable reference to word. Thus, when you code ends, even though you
might have issued all the commands to close word, it may still remain in
memory. The code you show appears to be designed to execute multiple times
in a session, so you could be filling memory with copies of word and causing
the intermittent problems you describe.

So the code you show does appear to use late binding - thus you don't need a
reference to the word object library (use the value of any word constants
rather than using defined constant name.)

Make sure you issue the proper commands to close word

Fully qualify all object refernces to objects in word and release them at
the end.

--
Regards,
Tom Ogilvy



"Ed" wrote in message
...
Bob and Tom:

Thank you for your responses. But I thought I *was* using late binding.
Sometimes, though, it will error on the Open command - Object required.
Other times it will lock up and not proceed; when I close through Task
Manager, I have a "ghost" doc created. My code is below - if you can help
me understand what I'm missing, I will be most grateful.

Ed

Dim WD As Object
Dim doc As String
Dim Fname As String
Dim Fpath As String

' Get file path
Fpath = ThisWorkbook.Path

' Check if ActiveCell is in Col C
Sheets("Sheet1").Activate
If ActiveCell.Column = 3 Then

' Get TIR number from list page
Fname = ActiveCell.Text

' Open TIR
doc = Fpath & "\" & Fname & ".doc"
Set WD = CreateObject("Word.Application")
WD.Documents.Open doc
WD.Visible = True

Else
MsgBox "Please select a TIR number in Column C using a single mouse
click."

"Tom Ogilvy" wrote in message
...
tools=Macros=Security, select trust access to Visual Basic Project

http://support.microsoft.com/default...b;EN-US;282830
PRB: Programmatic Access to Office XP VBA Project Is Denied

However, your whole idea sounds flawed. The library doesn't actually
contain the code that will be executed I don't believe, so you would be
using a roadmap of Europe to find you way around the US as an analogy.

The usual solution to this problem is to use late binding for the

release
version of the application.


http://support.microsoft.com/default...b;EN-US;244167
INFO: Writing Automation Clients for Multiple Office Versions

http://support.microsoft.com/default...b;en-us;245115
INFO: Using Early Binding and Late Binding in Automation

http://support.microsoft.com/default...b;en-us;247579
INFO: Use DISPID Binding to Automate Office Applications Whenever

Possible

--
Regards,
Tom Ogilvy



"Ed" wrote in message
...
I have an Excel project which calls Word (hence posting to both NG).

It's
created on a system running Windows/Office XP. I've been having

difficulty
running code which calls Word on Windows/Office 2000 machines. I

discovered
the reference to the Word library was for Word10 - XP - which does not

exist
on a 2000 machine. I got the bright idea of copying the Word9

reference
from a 2000 machine onto my XP machine, and then setting the reference

in
the code which creates this workbook. With the following code, I have

two
problems:

Sub Change_Refs()

' Set reference to Word9 vs. Word10
refWord9 = "C:\Program Files\Microsoft Office\Office10\MSWORD9.olb"
refWord10 = "C:\Program Files\Microsoft Office\Office10\MSWORD.olb"

ThisWorkbook.VBProject.References.Remove refWord10
ThisWorkbook.VBProject.References.AddFromFile refWord9

End Sub

Problem 1: The Remove line generates an error - "Object required"
Problem 2: I commented out the Remove line just to see what the code

would
do on the Add line. Another error - I'm not trusted to

programmatically
change the VB project.

Any suggestions?

Ed