PC Review


Reply
Thread Tools Rate Thread

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

 
 
Patrick Penet
Guest
Posts: n/a
 
      1st Sep 2007
.... 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

"Halim" <(E-Mail Removed)> a écrit dans le message de news: 2220FAFA-27E2-454F-A0F0-(E-Mail Removed)...
> Place this code below in a standard module:
> code below will open word better if you run 'Initial' once at first.
> Public WordObj as Object
> Sub Initial()
> Set WordObj = createobject("word.application")
> WordObj.visible = true
> 'do your stuff here...
> End sub
>
> Then place code below in ThisWorkbook module:
> Private Sub Workbook_BeforeClose(Cancel As Boolean)
> WordObj.Quit
> set WordObj = nothing
> End Sub
>
> --
> Regards,
>
> Halim
>
>
>
> "Patrick Penet" wrote:
>
>> Thank you but I need further precisions.
>>
>> The Word document is inbedded in a workbook
>> and programmatically I do not intent to act on it.
>>
>> The user only opens the WB and modifies the
>> document if he needs and then closes the WB.
>>
>> The WB is in another instance of Excel and saved
>> in the Before_Close sub.
>>
>> Both the WB and the document have small pieces
>> of code mainly for design and behaviour.
>>
>> So, at your idea, where should I put the code you
>> suggested ?
>>
>> Thank you for answering.
>> Patrick
>>
>> "Halim" <(E-Mail Removed)> a écrit dans le message de news: 0412F897-F66A-41D7-8310-(E-Mail Removed)...
>> > hi,
>> >
>> > You have to define your WORD object variable as a public variable
>> >
>> > Public WordObj as Object
>> >
>> > Sub Initial()
>> > Set WordObj = createobject("word.application")
>> > WordObj.visible = true
>> > 'do your stuff here...
>> > End sub
>> >
>> > Private Sub Workbook_BeforeClose(Cancel As Boolean)
>> > WordObj.Quit
>> > set WordObj = nothing
>> > End Sub
>> >
>> > --
>> > Regards,
>> >
>> > Halim
>> >
>> >
>> >
>> > "Patrick Penet" wrote:
>> >
>> >> Hello Gurus,
>> >>
>> >> I have a workbook which includes a Word document.
>> >>
>> >> When, by VBA, the user quits this workbook, once the
>> >> Word document is edited, and returns into my app,
>> >> an instance of WINWORD is remaining active in the
>> >> tasks manager.
>> >>
>> >> And more, even if the user leaves the application, this
>> >> WINWORD.EXE remains active and raises a problem
>> >> at the closing of Windows.
>> >>
>> >> Any ideas, APIs, tips or tricks well accepted.
>> >> Many thanks.
>> >>
>> >> Patrick

>>
>>
>>




 
Reply With Quote
 
 
 
 
=?Utf-8?B?SGFsaW0=?=
Guest
Posts: n/a
 
      2nd Sep 2007
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
--
Regards,

Halim



"Patrick Penet" wrote:

> .... 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
>
> "Halim" <(E-Mail Removed)> a écrit dans le message de news: 2220FAFA-27E2-454F-A0F0-(E-Mail Removed)...
> > Place this code below in a standard module:
> > code below will open word better if you run 'Initial' once at first.
> > Public WordObj as Object
> > Sub Initial()
> > Set WordObj = createobject("word.application")
> > WordObj.visible = true
> > 'do your stuff here...
> > End sub
> >
> > Then place code below in ThisWorkbook module:
> > Private Sub Workbook_BeforeClose(Cancel As Boolean)
> > WordObj.Quit
> > set WordObj = nothing
> > End Sub
> >
> > --
> > Regards,
> >
> > Halim
> >
> >
> >
> > "Patrick Penet" wrote:
> >
> >> Thank you but I need further precisions.
> >>
> >> The Word document is inbedded in a workbook
> >> and programmatically I do not intent to act on it.
> >>
> >> The user only opens the WB and modifies the
> >> document if he needs and then closes the WB.
> >>
> >> The WB is in another instance of Excel and saved
> >> in the Before_Close sub.
> >>
> >> Both the WB and the document have small pieces
> >> of code mainly for design and behaviour.
> >>
> >> So, at your idea, where should I put the code you
> >> suggested ?
> >>
> >> Thank you for answering.
> >> Patrick
> >>
> >> "Halim" <(E-Mail Removed)> a écrit dans le message de news: 0412F897-F66A-41D7-8310-(E-Mail Removed)...
> >> > hi,
> >> >
> >> > You have to define your WORD object variable as a public variable
> >> >
> >> > Public WordObj as Object
> >> >
> >> > Sub Initial()
> >> > Set WordObj = createobject("word.application")
> >> > WordObj.visible = true
> >> > 'do your stuff here...
> >> > End sub
> >> >
> >> > Private Sub Workbook_BeforeClose(Cancel As Boolean)
> >> > WordObj.Quit
> >> > set WordObj = nothing
> >> > End Sub
> >> >
> >> > --
> >> > Regards,
> >> >
> >> > Halim
> >> >
> >> >
> >> >
> >> > "Patrick Penet" wrote:
> >> >
> >> >> Hello Gurus,
> >> >>
> >> >> I have a workbook which includes a Word document.
> >> >>
> >> >> When, by VBA, the user quits this workbook, once the
> >> >> Word document is edited, and returns into my app,
> >> >> an instance of WINWORD is remaining active in the
> >> >> tasks manager.
> >> >>
> >> >> And more, even if the user leaves the application, this
> >> >> WINWORD.EXE remains active and raises a problem
> >> >> at the closing of Windows.
> >> >>
> >> >> Any ideas, APIs, tips or tricks well accepted.
> >> >> Many thanks.
> >> >>
> >> >> Patrick
> >>
> >>
> >>

>
>
>
>

 
Reply With Quote
 
Patrick Penet
Guest
Posts: n/a
 
      2nd Sep 2007
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


"Halim" <(E-Mail Removed)> a écrit dans le message de news: 01CF35BF-96C8-4729-B62D-(E-Mail Removed)...
> 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
> --
> Regards,
>
> Halim
>
>
>
> "Patrick Penet" wrote:
>
>> .... 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
>>
>> "Halim" <(E-Mail Removed)> a écrit dans le message de news: 2220FAFA-27E2-454F-A0F0-(E-Mail Removed)...
>> > Place this code below in a standard module:
>> > code below will open word better if you run 'Initial' once at first.
>> > Public WordObj as Object
>> > Sub Initial()
>> > Set WordObj = createobject("word.application")
>> > WordObj.visible = true
>> > 'do your stuff here...
>> > End sub
>> >
>> > Then place code below in ThisWorkbook module:
>> > Private Sub Workbook_BeforeClose(Cancel As Boolean)
>> > WordObj.Quit
>> > set WordObj = nothing
>> > End Sub
>> >
>> > --
>> > Regards,
>> >
>> > Halim
>> >
>> >
>> >
>> > "Patrick Penet" wrote:
>> >
>> >> Thank you but I need further precisions.
>> >>
>> >> The Word document is inbedded in a workbook
>> >> and programmatically I do not intent to act on it.
>> >>
>> >> The user only opens the WB and modifies the
>> >> document if he needs and then closes the WB.
>> >>
>> >> The WB is in another instance of Excel and saved
>> >> in the Before_Close sub.
>> >>
>> >> Both the WB and the document have small pieces
>> >> of code mainly for design and behaviour.
>> >>
>> >> So, at your idea, where should I put the code you
>> >> suggested ?
>> >>
>> >> Thank you for answering.
>> >> Patrick
>> >>
>> >> "Halim" <(E-Mail Removed)> a écrit dans le message de news:
>> >> 0412F897-F66A-41D7-8310-(E-Mail Removed)...
>> >> > hi,
>> >> >
>> >> > You have to define your WORD object variable as a public variable
>> >> >
>> >> > Public WordObj as Object
>> >> >
>> >> > Sub Initial()
>> >> > Set WordObj = createobject("word.application")
>> >> > WordObj.visible = true
>> >> > 'do your stuff here...
>> >> > End sub
>> >> >
>> >> > Private Sub Workbook_BeforeClose(Cancel As Boolean)
>> >> > WordObj.Quit
>> >> > set WordObj = nothing
>> >> > End Sub
>> >> >
>> >> > --
>> >> > Regards,
>> >> >
>> >> > Halim
>> >> >
>> >> >
>> >> >
>> >> > "Patrick Penet" wrote:
>> >> >
>> >> >> Hello Gurus,
>> >> >>
>> >> >> I have a workbook which includes a Word document.
>> >> >>
>> >> >> When, by VBA, the user quits this workbook, once the
>> >> >> Word document is edited, and returns into my app,
>> >> >> an instance of WINWORD is remaining active in the
>> >> >> tasks manager.
>> >> >>
>> >> >> And more, even if the user leaves the application, this
>> >> >> WINWORD.EXE remains active and raises a problem
>> >> >> at the closing of Windows.
>> >> >>
>> >> >> Any ideas, APIs, tips or tricks well accepted.
>> >> >> Many thanks.
>> >> >>
>> >> >> Patrick
>> >>
>> >>
>> >>

>>
>>
>>
>>



 
Reply With Quote
 
=?Utf-8?B?dXJrZWM=?=
Guest
Posts: n/a
 
      2nd Sep 2007
"Patrick Penet" wrote:

> 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


--
urkec
 
Reply With Quote
 
Patrick Penet
Guest
Posts: n/a
 
      2nd Sep 2007
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


"urkec" <(E-Mail Removed)> a écrit dans le message de news: 73FC99CB-EDCC-49BA-920C-(E-Mail Removed)...
> "Patrick Penet" wrote:
>
>> 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
>
>
> --
> urkec



 
Reply With Quote
 
=?Utf-8?B?dXJrZWM=?=
Guest
Posts: n/a
 
      2nd Sep 2007
"Patrick Penet" wrote:

> 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.


--
urkec
 
Reply With Quote
 
Patrick Penet
Guest
Posts: n/a
 
      3rd Sep 2007
>>If I want to use early binding, I add reference to "Microsoft WMI Scripting
>>V2.1 Library".


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.

>>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?


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.

>>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.
>>--
>>urkec


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

Regards.
Patrick


 
Reply With Quote
 
=?Utf-8?B?dXJrZWM=?=
Guest
Posts: n/a
 
      3rd Sep 2007
"Patrick Penet" wrote:

> >>If I want to use early binding, I add reference to "Microsoft WMI Scripting
> >>V2.1 Library".

>
> 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.
>
> >>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?

>
> 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.
>
> >>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.
> >>--
> >>urkec

>
> 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.


--
urkec
 
Reply With Quote
 
Patrick Penet
Guest
Posts: n/a
 
      4th Sep 2007
Thank you for these interesting precisions.
Regards

Patrick


 
Reply With Quote
 
 
 
Reply

Thread Tools
Rate This Thread
Rate This Thread:

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
How to Kill the WinWord SpellChecker process I started? Dean Slindee Microsoft VB .NET 2 10th Nov 2008 02:07 AM
File saved with newest WinWord won't open in WinWord 2000 Norman Swartz Microsoft Word Document Management 1 15th Mar 2008 09:36 PM
Cannot kill a WINWORD.EXE instanciation Patrick Penet Microsoft Excel Programming 9 12th Mar 2008 03:45 AM
Winword 2007 crashes on the following command line: winword aaa.do Michael Microsoft Word Document Management 2 6th Feb 2008 01:35 PM
Using Winword as editor ... Winword not shutting down when closingOutlook Robert S. Clayton II Microsoft Outlook Discussion 0 11th May 2005 04:08 PM


Features
 

Advertising
 

Newsgroups
 


All times are GMT +1. The time now is 12:27 PM.