PC SOFT

PROFESSIONAL NEWSGROUPS
WINDEVWEBDEV and WINDEV Mobile

Home → WINDEV 2024 → Ole automation WORD récupération nom du document
Ole automation WORD récupération nom du document
Started by Franck Béron, Feb., 03 2005 4:34 PM - No answer
Posted on February, 03 2005 - 4:34 PM
Bonjour à tous

Je bute depuis plusieurs jours sur un problème Ole automation avec Word.
Je vous donne ci-dessous le code que j'ai réalisé.

J'ouvre Word, je crée le document, et tant que je n'ai pas fermé Word je boucle pour vérifier que Word est toujours ouvert.
Dans la variable reponse je récupère le nom du document, si l'utilisateur enregistre le document sous un nom quelconque la variable reponse se met à jour.

C'est là que j'ai un problème, dès qu'un menu sous Word est ouvert, tous les ordres Ole qui sont envoyés tant que le menu est ouvert provoquent une erreur. J'ai intercepté l'erreur par quand exception, si bien que je peux toujours continuer ma boucle.
Sur mon PC j'ai 128 Mo de Ram, si je reste sur un menu il me faut 5 minutes environ pour avoir une erreur Ole, sur un poste avec 1 Go de Ram, la même erreur survient au bout de 30 secondes. Sûrement l'empilement des erreurs!
Comment faire ?

Il faut que je sache que l'utilisateur n'est plus sous Word (il peut y rester la journée s'il le désire), et sous quel nom et à quel endroit il a enregistré le document (non imposé).

Tous les moyens sont les bienvenus, base de registre, API, Ole etc...

Franck

Word est un Objet ole dynamique
Word_present est un booleen = vrai
reponse est une chaine

Word = Objetactif("Word.Application")
si Word = null alors
Word=allouer un objet OLE "Word.Application"
fin
Word>>Visible=olevrai //Word est visible à l'écran
Word>>WindowState=1 //1=Maximise 2=Normal 3=Minimise
//je crée un nouveau document à partir d'une lettre type (NomDoc) que l'utilisateur
//choisi parmi une liste
Word>>Documents>>Add(NomDoc) //OUverture du modèle.dot
//tant que Word n'est pas fermé je boucle
tantque Word_present = vrai
Word = objetactif("Word.Application")
si Word = null alors Word_present = faux
quand exception
Goto debut
fin
multitache(20)
//je récupère le nom du document, tant que pas enregistré le nom est Document1
//sinon je récupère le nom sous lequel l'utilisateur a enregistré le document
reponse = Word>>ActiveDocument>>FullName
debut:
FIN