Vérification si fichier Word ouvert depuis VBA Excel

[Résolu]
Signaler
Messages postés
9
Date d'inscription
mercredi 9 novembre 2005
Statut
Membre
Dernière intervention
9 novembre 2010
-
Messages postés
9
Date d'inscription
mercredi 9 novembre 2005
Statut
Membre
Dernière intervention
9 novembre 2010
-
Bonjour,

Après de nombreuses recherches infructueuses, j'en viens à demander de l'aide sur mon sujet.

Depuis une macros Excel, j'essaye de voir si Word est lancé et si le fichiers MON_FICHIER est ouvert.

J'ai essayé avec :

Dim appword As Object

Set appword = GetObject(, "Word.Application")
If appword Is Nothing Then
appword.Documents.Open filename:=MON_FICHIER
Else
For i = 1 To appword.Documents.Count
If appword.Documents(i).Name = fichier_modele Then
trouve = True
Exit For
End If
Next i
End if


Le soucis c'est que la ligne :
Set appword = GetObject(, "Word.Application")

me renvoie systématiquement "Microsoft Word" pour la variable appWord !!
Je pensais que cette variable serais nulle si Word n'était pas lancé...

Merci pour vos réponses...

4 réponses

Messages postés
9
Date d'inscription
mercredi 9 novembre 2005
Statut
Membre
Dernière intervention
9 novembre 2010

J'ai réussi à faire tourner le code sans soucis et j'ai bien récupérer l'erreur 429 comme indiqué dans l'aide (ouais je sais lire !) quand Word n'est pas lancé.

Tout à l'heure je n'avais pas ce comportement normal et j'obtenais "Microsoft Word" dans ma variable object, Word lancé ou non. Donc oui à se niveau c'est normal d'abandonner ;)

En résumé, ce qui est assis devant le pc n'est rien d'autre qu'une personne qui reste sans voix devant les mystères de l'informatique (comme toi apparemment ;) )


TchuB
Messages postés
1835
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
20 novembre 2013
10
Salut,

Non, non et non !

If appword Is Nothing Then
appword.Documents.Open filename:=MON_FICHIER  


si ta variable object est vide c'est que word n'est pas ouvert donc pas la peine d'essayer d'ouvrir un document dans un objet word qui est vide.

Dim appword As Object

Set appword = GetObject(, "Word.Application")
If appword Is Nothing Then
   Set appword = CreateObject("Word.Application")
   appword.Documents.Open filename:=MON_FICHIER
Else
   For i = 1 To appword.Documents.Count
      If appword.Documents(i).Name = fichier_modele Then
         trouve = True
         Exit For
      End If
   Next i
End if


Pour éviter d'utiliser une boucle qui peu prend un peu de temps. Il suffit de tenter d'activer le document et de verifier si erreur il y à:

Else  
   On Error Resume Next 'on anticipe l’éventuelle erreur
   appword.Documents(fichier_modele).Activate
   if err=0 then trouve = True 'si pas d'erreur
   On Error Goto 0 'annule le "On Error Resume Next"
End if


A+
Messages postés
9
Date d'inscription
mercredi 9 novembre 2005
Statut
Membre
Dernière intervention
9 novembre 2010

Ok, merci pour la réponse mais ce n'est pas le sujet de mon soucis ;)

Quand j'exécute la ligne :
Set appword = GetObject(, "Word.Application")

que l'application Word soit lancée ou non, aapword vaut "Microsoft Word" donc je ne passe jamais dans al cas de la création de l'objet et de l'ouverture de mon fichier !
Messages postés
1835
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
20 novembre 2013
10
et alors ???

appword est une variable de type objet pas une variable de type string !
Cela ne te renvoi surement pas "Microsoft Word" lors de l'execution pour cela il faut aller voir ce qu'il y a dans la propriété "name" !

lors de la tentative de récuperation de l'objet "Word.Application", même si la récupération à échouée(word n'est pas ouvert), la propriété name de ta variable objet à, bizzarement, pris le nom de l'objet "Word.Application". Je ne sais pas expliquer pourquoi... mais c'est surtout dans ce cas que "ce n'est pas le sujet de ton soucis" !

Donc c'est quoi l'erreur ?

ben ouai on ce fou du reste ce qui nous intéresse c'est l'erreur !!!

comme j'ai une bonne boule de cristal(les 2 autres ne sont pas de cristal mais fonctionnent bien elles aussi ) l'erreur est sûrement :

Erreur "429", un composant Activex ne peu pas créer d'objet.

et oui word n'est pas ouvert donc la récupération échoue... ah tien !!!

On Error Resume Next ' retarde le traitement de l'erreur
set appword = GetObject(, "Word.Application")
On Error Goto 0
If appword Is Nothing Then
   Err.Clear
   Set appword = CreateObject("Word.Application")
   appword.Documents.Open filename:=MON_FICHIER
Else  
   On Error Resume Next 'on anticipe l'éventuelle erreur
   appword.Documents(fichier_modele).Activate
   if err=0 then trouve = True 'si pas d'erreur
   On Error Goto 0 'annule le "On Error Resume Next"
End if


la si cela ne fonctionne pas c'est que le bug est assis devant le pc... et moi j'abandonne

A+