Cannot kill a WINWORD.EXE instanciation - Sorry for reposting ...

P

Patrick Penet

.... but I really want to solve this problem.

Sorry Halim it does not work.
Actually this code is opening a new instance of Word
but not the one wich is embedded in XL.

The problem is : if the user needs to modify the
text of the embedded Word, he first select the
Word object (right click) and then double click
on it.

This will open an instance of Word "inside" Excel.

This is this instance that would not terminate when
closing the workbook.

Thanks anyhow.

Patrick
 
H

Halim

maybe you can do this but i'm not sure:
Sub CloseWord()
Set WordObj = getobject( , "word.application")
'do your stuff here...
WordObj.quit
End sub

Place that code after exiting word object
 
P

Patrick Penet

No way !
This stupid WINWORD.EXE is still here.

I will search around for some APIs, I think I
remember one was doing the job.

Thanks anyway.

Patrick
 
U

urkec

Patrick Penet said:
No way !
This stupid WINWORD.EXE is still here.

I will search around for some APIs, I think I
remember one was doing the job.

Try this code to kill all WINWORD.EXE processes created by embedded objects:

Set objSWbem = CreateObject("winmgmts:root\cimv2")
Set colProcesses = objSWbem.ExecQuery _
("Select * From Win32_Process " & _
"Where Name='WINWORD.EXE' " & _
"And CommandLine Like '%-Embedding%'")

For Each objProcess In colProcesses
objProcess.Terminate
Next
 
P

Patrick Penet

I tried your code because it looks
quite new to me. (And I'm out of idea).

But can you indicate how I should define
theses variables objSWbem, colProcesses and
colProcesses.

I drove some tests at several places :

Public objSWbem As Object
Public colProcesses As Object
Public objProcess As Object

And also I defined them as variant.

But no chance : no errors at all, and the
!!%('$;!+) WINWORD.EXE is still there.

Thank you anyhow, and many thanks if
you follow this post.

Cordially.
Patrick
 
U

urkec

Patrick Penet said:
I tried your code because it looks
quite new to me. (And I'm out of idea).

But can you indicate how I should define
theses variables objSWbem, colProcesses and
colProcesses.

I drove some tests at several places :

Public objSWbem As Object
Public colProcesses As Object
Public objProcess As Object

And also I defined them as variant.

But no chance : no errors at all, and the
!!%('$;!+) WINWORD.EXE is still there.

If I want to use early binding, I add reference to "Microsoft WMI Scripting
V2.1 Library". Where did you put the code? This code is supposed to kill all
WINWORD.EXE processes, does it work if you put it in a standard module and
run the sub manually with a WINWORD.EXE process running?


Sub WMITest()

Dim objSWbem As SWbemServices
Dim colProcesses As SWbemObjectSet
Dim objProcess As SWbemObject

Set objSWbem = GetObject("winmgmts:root\cimv2")
Set colProcesses = objSWbem.ExecQuery _
("Select * From Win32_Process " & _
"Where Name='WINWORD.EXE'")

For Each objProcess In colProcesses
Debug.Print objProcess.CommandLine
Debug.Print objProcess.ExecutablePath
objProcess.Terminate
Next

End Sub


Maybe you could also try using Shell function with Taskkill command. I am
not very good with Command Prompt, but I think that would be the simplest way
to kill a process.
 
P

Patrick Penet

If I want to use early binding, I add reference to "Microsoft WMI Scripting
Yes, I understand your code. I am not used to program Microsoft WMI Scripting
Library because I am very much afraid it wont work with previous versions of
Windows.

I tried the code in many different places, including a standard module
but it was with the 'embedded' parameter.

Your code below is perfectly swell and works fine with a normal
Word session, but not with the embedded one.

By the way, I thank you very much for these pieces of code that
I will keep in pocket for future needs.

Regards.
Patrick
 
U

urkec

Patrick Penet said:
Yes, I understand your code. I am not used to program Microsoft WMI Scripting
Library because I am very much afraid it wont work with previous versions of
Windows.


I tried the code in many different places, including a standard module
but it was with the 'embedded' parameter.

Your code below is perfectly swell and works fine with a normal
Word session, but not with the embedded one.


By the way, I thank you very much for these pieces of code that
I will keep in pocket for future needs.

Regards.
Patrick


I used WMI with Windows 2000 and WIndows XP, mostly to get system
information I couldn't get some other way (Documentation says WMI is
available for Windows 2000, Windows XP, and Windows Me). Other than
compatibility, problems could be that user needs administrator privileges tor
run it and that some classes are only available with XP, etc.
I tested the code to terminate WINWORD.EXE a couple of times and it seemed
to work with with processes created by embedded objects. Sorry it didn't work
for you, I hope you find some other solution.
 

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