cs_Stefun
Messages postés9Date d'inscriptionmercredi 9 novembre 2005StatutMembreDernière intervention 9 novembre 2010
-
12 oct. 2010 à 11:19
cs_Stefun
Messages postés9Date d'inscriptionmercredi 9 novembre 2005StatutMembreDerniè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é...
cs_Stefun
Messages postés9Date d'inscriptionmercredi 9 novembre 2005StatutMembreDerniè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 ;) )
bigfish_le vrai
Messages postés1835Date d'inscriptionvendredi 13 mai 2005StatutMembreDernière intervention20 novembre 201315 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
cs_Stefun
Messages postés9Date d'inscriptionmercredi 9 novembre 2005StatutMembreDerniè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 !
bigfish_le vrai
Messages postés1835Date d'inscriptionvendredi 13 mai 2005StatutMembreDernière intervention20 novembre 201315 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