Word depuis excel

Résolu
cs_ROLANDG Messages postés 21 Date d'inscription vendredi 4 février 2005 Statut Membre Dernière intervention 3 octobre 2006 - 30 sept. 2006 à 17:27
cs_ROLANDG Messages postés 21 Date d'inscription vendredi 4 février 2005 Statut Membre Dernière intervention 3 octobre 2006 - 3 oct. 2006 à 22:57
Bonjour à tous,


Petit problème simple, sur lequel je me casse les dents :


J'appelle MSWord depuis MSEXCEL (en VBA). Donc :


    Dim MonObjet As Word.Application                    'fonctionne aussi avec "As Object"

    Set MonObjet = CreateObject("Word.Application")    'Crée effectivement le processus

    '...                                                                                'ce que j'ai à faire sous msword

    MonObjet.Quit                                                           'pas d'effets apparents

    Set MonObjet = Nothing                                          'devrait tuer le processus


Quand je dis "devrait", c'est qu'en pratique mon processus WINWORD.EXE
est toujours présent dans la liste du gestionnaire des tâches de
windows (xp pro), onglet processus.

A 18Mo le bout,  je vous raconte pas le résultat d'un appel dans une boucle ...

Comment faire pour effectivement flinguer le processus ?????


Merci par avance de vos lumières

à très bientôt ,


Roland



loup maigre, pas chien gras.

8 réponses

cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 27
1 oct. 2006 à 10:34
 Bonjour ,

Il faut le "Word.Quit".
jean-marc

Dim Fso            :  Set Fso = CreateObject("Scripting.FileSystemObject")
Dim Word           :  Set Word = CreateObject("Word.Application")
Dim MyFile         :  MyFile = "d:\Jean-Marc Formation Unix - Linux.doc"
Dim File           :  Set File = Fso.GetFile(MyFile)

'Vérification dans Gestionnaire des tâches
'le process WINWORD.exe est actif
WScript.Sleep(50000)
Word.Quit

Set File = Nothing
Set Word = Nothing
Set Fso  = Nothing
MsgBox "Script terminé"

'Vérification dans Gestionnaire des tâches
'le process WINWORD.exe n'existe plus
3
cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 27
30 sept. 2006 à 18:18
 Bonjour ,

Si Open => Close ... + Set ... = nothingChaque "Set ... ...." implique un "Set ... Nothing"

jean-marc
0
cs_Nurgle Messages postés 1642 Date d'inscription samedi 6 novembre 2004 Statut Membre Dernière intervention 28 avril 2011 4
30 sept. 2006 à 19:06
Question redirigée de "CodeS-SourceS / Le bar / Discussions libres" vers "Visual Basic 6 / Langages dérivés / VBA".

<hr width="100%" size="2" />Nurgle(Antoine)
0
cs_ROLANDG Messages postés 21 Date d'inscription vendredi 4 février 2005 Statut Membre Dernière intervention 3 octobre 2006
1 oct. 2006 à 10:00
Bonjour Jean-Marc,

Merci pour ta réponse mais j'ai du mal a saisir ce que tu me dis.
Effectivement, j'ai au début :
    Set MonObjet = createobject("word.application")
(une seule et unique fois) qui crée le processus et, à la fin,
    Set MonObjet = Nothing
qui DEVRAIT tuer le processus, mais ce n'est pas le cas . Qu'ais-je oublié ?

Roland



loup maigre, pas chien gras.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_ROLANDG Messages postés 21 Date d'inscription vendredi 4 février 2005 Statut Membre Dernière intervention 3 octobre 2006
1 oct. 2006 à 20:46
Bonsoir Jean-Marc,

Hier, cela ne fonctionnait pas,

Aujourd'hui cela (semble) fonctionne.

C'est sans doute l'effet "gourou du vb".

Merci pour ta réponse, bien que je n'ais pas tout compris (dans les symptomes et les effets).
Bonne continuation à toi.

PS dans la pratique, les symptomes de non fonctionnement (cad non disparition du processus) ont eux-même disparu quand j'ai décoché dans les option de msword, onglet enregistrement, "confirmer l'enregistrement de normal.dot", qui me gonflait depuis un moment (je lance MSWORD, je ferme MSWord, il me demande si j'accepte d'enrfegistrer les modif dans normal.dot (lesquels ???).) anti spyware (AD-WARE SE à jour) anti virus NAV à jour, Qui modifie mon normaldotdot ???) de guerre lasse, j'ai décoché et, miracolo, mes blèmes ont disparu. Merci, Bill ...

loup maigre, pas chien gras.ad-ware SE 
0
cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 27
3 oct. 2006 à 19:41
Bonsoir,

Si un script est arrêté en cours d'exécution, les objets restent instanciés et le (ou les)
processus actif(s).
Idem si l'on oublie un "Set xxx = Nothing", "xxxx.Close", "xxxx.Quit".
La libération des processus ne s'effectuera que par un kill de ceux-ci ou un reboot du server. 

Lors de mes tests, prévoyant de nombreux ratés, je passe le code ci-dessous:

'Arrêt d'un Process
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\" _
    & strComputer & "\root\cimv2")
Set colProcessList = objWMIService.ExecQuery _
    ("Select * from Win32_Process Where Name = 'EXCEL.exe'")
For Each objProcess in colProcessList
    MsgBox objProcess.Name &vbCrLf& " id:" & objProcess.ProcessID
    objProcess.Terminate()
Next


Set objWMIService = Nothing
Set colProcessList = Nothing

jean-marc
0
cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 27
3 oct. 2006 à 19:59
 Re,

Pour info:
Set Word = CreateObject("Word.Application")
Word.DisplayAlerts = wdAlertsNone

 Set objExcel = CreateObject("Excel.Application")
'Display alerte => true=oui false=non
objExcel.DisplayAlerts = False

jean-marc
0
cs_ROLANDG Messages postés 21 Date d'inscription vendredi 4 février 2005 Statut Membre Dernière intervention 3 octobre 2006
3 oct. 2006 à 22:57
Merci Jean-Marc,
et bravo !
Tu as combien de kilos de docs sous le coude ?

Ya des moments où, en plus de me sentir dilletante, j'me sens plouc !

Allez, je retourne jouer avec mes cubes.
à+

loup maigre, pas chien gras.
0
Rejoignez-nous