Vérification si fichier Word ouvert depuis VBA Excel [Résolu]

Messages postés
9
Date d'inscription
mercredi 9 novembre 2005
Dernière intervention
9 novembre 2010
- - Dernière réponse : cs_Stefun
Messages postés
9
Date d'inscription
mercredi 9 novembre 2005
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...
Afficher la suite 

Votre réponse

4 réponses

Meilleure réponse
Messages postés
9
Date d'inscription
mercredi 9 novembre 2005
Dernière intervention
9 novembre 2010
3
Merci
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

Merci cs_Stefun 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 97 internautes ce mois-ci

Commenter la réponse de cs_Stefun
Messages postés
1839
Date d'inscription
vendredi 13 mai 2005
Dernière intervention
20 novembre 2013
0
Merci
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+
Commenter la réponse de bigfish_le vrai
Messages postés
9
Date d'inscription
mercredi 9 novembre 2005
Dernière intervention
9 novembre 2010
0
Merci
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 !
Commenter la réponse de cs_Stefun
Messages postés
1839
Date d'inscription
vendredi 13 mai 2005
Dernière intervention
20 novembre 2013
0
Merci
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+
Commenter la réponse de bigfish_le vrai

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.