[R] Word 2007 - Objet COM insérer forme

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
jcaspar
Niveau 7
Niveau 7
Messages : 449
Enregistré le : mar. 23 sept. 2008 17:58
Status : Hors ligne

[R] Word 2007 - Objet COM insérer forme

#1

Message par jcaspar »

B :D onjour à tous !

Je souhaiterais ajouter des formes dans un document Word
mon code ne génère pas d'erreur mais il n'est pas opérationnel

Peut être avez vous une idée sur ce qui que je dois modifier dans mon code :?: ?

Je vous remercie pour vos idées et conseils :mrgreen:


Jean-Marc

Code : Tout sélectionner

[spoiler=]$word = ObjCreate("Word.Application")
    $word.visible = True
    $word.Documents.Add

$word.ActiveDocument.Shapes.AddShape("msoShapeRectangle", 95.25, 78.75, 285.75,146.25).Select
    $word.Selection.ShapeRange.Fill.Solid
    $word.Selection.ShapeRange.Fill.ForeColor.ObjectThemeColor = "wdThemeColorAccent1"
    $word.Selection.ShapeRange.Fill.ForeColor.TintAndShade ="0#"
    $word.Selection.ShapeRange.Fill.BackColor.RGB = $word.RGB(255, 255, 255)
    $word.Selection.ShapeRange.Fill.Visible = "msoTrue"
    $word.Selection.ShapeRange.Line.ForeColor.ObjectThemeColor ="wdThemeColorMainLight1"
    $word.Selection.ShapeRange.Line.ForeColor.TintAndShade = -0.05
    $word.Selection.ShapeRange.Line.Weight = "3#"
    $word.Selection.ShapeRange.Line.Style = "msoLineSingle"
    $word.Selection.ShapeRange.Line.Visible = "msoTrue"
    $word.Selection.ShapeRange.Shadow.Type = "msoShadow3"
    $word.Selection.ShapeRange.Shadow.ForeColor.ObjectThemeColor ="wdThemeColorAccent1"
    $word.Selection.ShapeRange.Shadow.ForeColor.TintAndShade ="-0.5"
    $word.Selection.ShapeRange.Shadow.Transparency ="0.5"
    $word.Selection.ShapeRange.Shadow.OffsetX = "1#"
    $word.Selection.ShapeRange.Shadow.OffsetY = "2#"
    $word.Selection.ShapeRange.Shadow.Visible = "msoTrue"
    $word.Selection.ShapeRange.ThreeD.Visible = "msoFalse"[/spoiler]
Modifié en dernier par jcaspar le mar. 12 mai 2015 11:25, modifié 2 fois.
Avatar du membre
orax
Modérateur
Modérateur
Messages : 1479
Enregistré le : lun. 23 mars 2009 04:50
Localisation : ::1
Status : Hors ligne

Re: [..] Word 2007 - Objet COM insérer forme

#2

Message par orax »

jcaspar a écrit :mon code ne génère pas d'erreur
C'est parce que elles sont silencieuses. En ajoutant les lignes suivantes au début du code, on peut voir à quel endroit à lieu la première erreur.

Code : Tout sélectionner

#AutoIt3Wrapper_Run_Debug_Mode=Y                 ;(Y/N) Run Script with console debugging. Default=N
#AutoIt3Wrapper_Run_Debug=On                     ;(On/Off) Switch debugging on/off
0011: 0-0: $word.ActiveDocument.Shapes.AddShape("msoShapeRectangle", 95.25, 78.75, 285.75,146.25).Select
0012: 1-0: ConsoleWrite(@error & @CRLF)

Ceci indique que la ligne 11 a retourné le code d'erreur 1.

msoShapeRectangle n'est pas une chaîne dans Word, c'est une constante qui aura une valeur numérique ("msoShapeRectangle" = une chaîne). Même remarque pour wdThemeColorAccent1, wdThemeColorMainLight1, ... Walkson en parlait ici => http://autoitscript.fr/forum/viewtopic.php?f=5&t=13443
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
Avatar du membre
walkson
Modérateur
Modérateur
Messages : 1038
Enregistré le : ven. 12 août 2011 19:49
Localisation : Hurepoix
Status : Hors ligne

Re: [..] Word 2007 - Objet COM insérer forme

#3

Message par walkson »

Bonjour,
Je crois que vous êtes trompé par l'éditeur de macro et particulièrement par cette forme

Code : Tout sélectionner

$word.Selection.Style = "Titre 3"
En fait, l'éditeur aurait du écrire

Code : Tout sélectionner

Selection.Style = wdStyleHeading3
sachant que wdStyleHeading3 = -4
Sur une version Word anglais, "Titre 3" ne passerait pas.
Ce qui nous donne pour votre script:
► Afficher le texte
Ici, toutes les constantes sont rentrées sous forme numérique à défaut de les déclarer.
Pour rappel, je récupère les constantes soit dans l'aide VBA soit dans l’explorateur d'objets (F2) (surtout pour les mso...)
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
Répondre