[..] Fonction _Word_DocRangeSet

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
jpascal
Niveau 5
Niveau 5
Messages : 148
Enregistré le : jeu. 16 oct. 2008 16:21
Status : Hors ligne

[..] Fonction _Word_DocRangeSet

#1

Message par jpascal »

Bonjour,

Je souhaiterais ouvrir un nouveau document Word, ajouter du texte et sélectionner la totalité du document.

J'ai du mal à comprendre l'aide AutoIt et Microsoft :
https://www.autoitscript.fr/autoit3/doc ... ngeSet.htm
https://docs.microsoft.com/en-us/office ... a-document

Je voudrais simplement ajouter du texte et une image dans un objet Word, puis le sélectionner entièrement.

J'arrive à le faire uniquement avec du texte :
#include <Word.au3>

Local $oWord = _Word_Create()
Local $oDoc = _Word_DocAdd($oWord)
Local $oRange = _Word_DocRangeSet($oDoc, 0)
$oRange.InsertAfter("Text" & @CRLF)
$oRange.Select
MsgBox(0, 0, "Pause")
_Word_DocClose($oDoc)

Je peux ajouter une image mais elle sera affichée avant mon texte :
#include <Word.au3>

Local $oWord = _Word_Create()
Local $oDoc = _Word_DocAdd($oWord)
Local $oRange = _Word_DocRangeSet($oDoc, 0)
$oRange.InsertAfter("Text" & @CRLF)
_Word_DocPictureAdd($oDoc, 'C:\Program Files (x86)\AutoIt3\Examples\GUI\merlin.gif');, Default, Default, $oRange)
$oRange.Select
MsgBox(0, 0, "Pause")
_Word_DocClose($oDoc)
Je souhaiterais pouvoir l'ajouter à la fin du texte.

En fait ce que je ne sais pas faire c'est sélectionner tout le contenu d'un document avec la fonction _Word_DocRangeSet()

P.S. : je pourrais m'en sortir en insérant dans un premier temps l'image puis en utilisant des InsertBefore mais bon...
AutoIt 3.3.15.1 / 3.3.15.3 - SciTE 4.2.0 - Windows 10 x64
Avatar du membre
walkson
Modérateur
Modérateur
Messages : 911
Enregistré le : ven. 12 août 2011 19:49
Localisation : Hurepoix
Status : Hors ligne

Re: [..] Fonction _Word_DocRangeSet

#2

Message par walkson »

Bonjour,
La grande difficulté avec Word est de se placer dans le texte
Voici un essai

Code : Tout sélectionner

#include <Word.au3>

Local $oWord = _Word_Create()
Local $oDoc = _Word_DocAdd($oWord)
Local $oRange = _Word_DocRangeSet($oDoc, -1)
For $i = 1 To 5
$oRange.InsertAfter("Text " & $i & @CRLF)
Next
Local $oRange = _Word_DocRangeSet($oDoc, -2)
_Word_DocPictureAdd($oDoc, 'C:\Program Files\AutoIt3\Examples\GUI\merlin.gif', Default, Default, $oRange)
$oRange = _Word_DocRangeSet($oDoc, -2,$wdParagraph,-6)
$oRange.Select
$oRange.InsertAfter(@CRLF & "Text autre ")
;MsgBox(0, 0, "Pause")
;_Word_DocClose($oDoc)
Pour tout sélectionner, on peut aussi utiliser $oWord.Selection.WholeStory
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
jpascal
Niveau 5
Niveau 5
Messages : 148
Enregistré le : jeu. 16 oct. 2008 16:21
Status : Hors ligne

Re: [..] Fonction _Word_DocRangeSet

#3

Message par jpascal »

Bonjour walkson,

Merci pour la solution.

Néanmoins, si je ne sais pas combien de paragraphes compte le document, ou que j'ouvre un document qui contient déjà du texte, comment puis-je faire pour définir un "range" correspondant à tout le document ?
AutoIt 3.3.15.1 / 3.3.15.3 - SciTE 4.2.0 - Windows 10 x64
Avatar du membre
walkson
Modérateur
Modérateur
Messages : 911
Enregistré le : ven. 12 août 2011 19:49
Localisation : Hurepoix
Status : Hors ligne

Re: [..] Fonction _Word_DocRangeSet

#4

Message par walkson »

Bonjour,
Dans l'exemple suivant, j'utilise $oWord.Selection.WholeStory qui sélectionne tout

Code : Tout sélectionner

#include <Word.au3>
Const $wdColorOrange = 26367
Const $wdToggle = 9999998
Local $oWord = _Word_Create()
Local $oDoc = _Word_DocAdd($oWord)
Local $oRange = _Word_DocRangeSet($oDoc, -1) ;Définit début/fin de la plage au début du document
For $i = 1 To 5
$oRange.InsertAfter("Text " & $i & @CRLF)
Next
$oRange = _Word_DocRangeSet($oDoc, -2) ;Définit début/fin de la plage à la fin du dcoument
_Word_DocPictureAdd($oDoc, 'C:\Program Files\AutoIt3\Examples\GUI\merlin.gif',Default,Default,$oRange)
$oWord.Selection.WholeStory ;sélectionne tout
$oWord.Selection.Range.Font.TextColor = $wdColorOrange
$oWord.Selection.Range.Font.Bold = $wdToggle
$oWord.Selection.Range.Font.Size = 14
;$oWord.ActiveDocument.Range(1,1).Select ;se place au 1 premier caractère
$pos = _Word_DocRangeSet($oDoc, -2)
$pos.Select						;ou se place à la fin du doc
$oWord.ActiveDocument.Saved = True ;;pour ne pas enregistrer le doc
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
Répondre