|
| Inicio → WINDEV 2025 → Récupérer le texte d'un champ précis en OLE Automation sur un fichier Word |
| Récupérer le texte d'un champ précis en OLE Automation sur un fichier Word |
| Iniciado por Aurelien Estival, 04,mar. 2020 15:23 - 3 respuestas |
| |
| | | |
|
| |
Miembro registrado 4 mensajes |
|
| Publicado el 04,marzo 2020 - 15:23 |
Bonjour à tous, Tout d'abord merci à ceux qui prendront le temps de me lire. Mon problème est le suivant, avec ce bout de code: sFilepath est une chaîne = snomFichier sTemp est une chaîne
Word>>documents>>Add(sFilepath) Word>>Visible=Faux
nbShape est un entier = Word>>ActiveDocument>>Shapes>>Count() sTexteChamp est une chaîne
POUR i = 1 À nbShape sTemp = Word>>ActiveDocument>>Shapes[i]>>name() SI sTemp = "Rectangle 3" sTexteChamp = Word>>ActiveDocument>>Shapes[i]>>Select Trace(sTexteChamp) FIN FIN j'arrive pour l'instant à atteindre le champ désiré seulement lors de mon Trace(sTexteChamp) le seul affichage que j'obtiens est un "0". J'ai bien essayer de mettre : sTexteChamp = Word>>ActiveDocument>>Shapes[i]>>Select>>Text() et meme remplacer le Text() par WholeStory seulement il me renvoie une erreur me disant que l'objet sur lequel j'appelle la méthode n'est pas un obet OLE Automation? J'en suis donc bloqué ici, je me positionne bien sur mon champ mais impossible de récupérer son contenu... Si quelqu'un a une idée, Tout aide ou piste sera la bienvenue  Merci encore et bon dev à tous! |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 962 mensajes |
|
| Publicado el 05,marzo 2020 - 16:49 |
hello, tu peux essayer quelque chose comme :
LeTexte est chaîne tAutomateObject est un objet OLE dynamique
QUAND EXCEPTIONEXCEPTION DANS tAutomateObject = allouer un objet OLE "Word.Application" tAutomateObject>>Visible = OLETrue tAutomateObject>>Documents>>Open("M:\test\mediainfo.docx", OLETrue) LeTexte = tAutomateObject>>ActiveDocument>>Shapes("ZoneDeTexte")>>TextFrame>>TextRange>>Text Trace (LeTexte) tAutomateObject>>ActiveDocument>>Close(OLEFaux, OLEFaux, OLEFaux) tAutomateObject>>Quit() FAIRE Info(ExceptionInfo(errComplet)) FIN
Libérer tAutomateObject
-- Ami calmant, J.P |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 4 mensajes |
|
| Publicado el 06,marzo 2020 - 10:30 |
Bonjour et merci à toi pour ta réponse, j'ai oublié de vérifier le forum hier soir avant de partir. J'ai entre temps décider de créer moi même un état windev dans lequel je chargerai les infos dont j'ai besoin pour ne pas perdre plus de temps. Cependant cette méthode de récupération des données m'intéresse et je vais tout de même prendre le temps de tester ce bout de code que tu m'as passé et reviendrai ensuite poster une réponse ici pour te dire si cela a fonctionné ou non tout de même. Merci encore et bon dev  Estival Aurélien |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 4 mensajes |
|
| Publicado el 06,marzo 2020 - 10:50 |
Re, je te confirme que ton code fonctionne parfaitement, merci à toi JP!  Seulement je viens de me rendre compte que dans mon cas à moi cela ne marchera toujours pas, en effet le document sur lequel je travail est en fait généré dynamiquement par un prestataire externe et va savoir comment ils ont fait, mais le champ que j'essaie d'atteindre n'est pas considéré comme une zone de texte. Pour tout dire il n'est même pas visible dans la liste des champs du document word??? Je vais donc mettre de côté ce document et resté sur mon état pour l'instant pour ne pas perdre plus de temps la dessus. Je te remercie encore pour ton code qui aurait du fonctionner si mon document word était correctement structuré, Je te souhaite de passer une bonne journée et un bon Dev, Estival Aurélien. |
| |
| |
| | | |
|
| | | | |
| | |
|