Vérification si fichier Word ouvert depuis VBA Excel

Résolu
cs_Stefun Messages postés 9 Date d'inscription mercredi 9 novembre 2005 Statut Membre Dernière intervention 9 novembre 2010 - 12 oct. 2010 à 11:19
cs_Stefun Messages postés 9 Date d'inscription mercredi 9 novembre 2005 Statut Membre Dernière intervention 9 novembre 2010 - 12 oct. 2010 à 14:56
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...
A voir également:

4 réponses

cs_Stefun Messages postés 9 Date d'inscription mercredi 9 novembre 2005 Statut Membre Dernière intervention 9 novembre 2010
12 oct. 2010 à 14:56
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
3
bigfish_le vrai Messages postés 1835 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 20 novembre 2013 15
12 oct. 2010 à 11:46
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+
0
cs_Stefun Messages postés 9 Date d'inscription mercredi 9 novembre 2005 Statut Membre Dernière intervention 9 novembre 2010
12 oct. 2010 à 12:28
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 !
0
bigfish_le vrai Messages postés 1835 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 20 novembre 2013 15
12 oct. 2010 à 13:35
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+
0
Rejoignez-nous