找回密码
 加入
搜索
查看: 16080|回复: 27

[转贴] autoit调用word

 火... [复制链接]
发表于 2009-7-27 14:00:06 | 显示全部楼层 |阅读模式
http://www.mybat.cn/forum.php?mo ... &extra=page%3D1

自AU3将WORD应用纳入之后,国内的AU3朋友们在这方面研究很少!今天放几个小脚本供参考。
#include <array.au3>
#include <Word.au3>
Const $msoPatternDarkDownwardDiagonal = 15
Const $msoShapeRectangle = 1
Const $msoGradientHorizontal = 1

_WordErrorHandlerRegister()
$oWordApp = _WordCreate()
$oDocActive = _WordDocGetCollection($oWordApp, 0);;画一条红直线

_WordDocLine($oDocActive, 510, 50, 90, 50, 1.5, 255)

Func _WordDocLine($o_DocActive, $s_Left, $s_left_H, $s_Line, $s__right_H, $s_Weight, $s_Color)
        With $o_DocActive.Shapes.AddLine($s_Left, $s_left_H, $s_Line, $s__right_H).Line
                .Weight = $s_Weight
                .ForeColor.RGB = $s_Color
                ;.BackColor.RGB = 128
        EndWith
EndFunc   ;==>_WordDocLine

;;;下面示例为活动文档添加图案线条。

With $oDocActive.Shapes.AddLine(200, 80, 350, 80).Line
        .Weight = 8
        .ForeColor.RGB = 255
        .BackColor.RGB = 128;;;线条的背景色
        .Pattern = $msoPatternDarkDownwardDiagonal;;;加图案
EndWith
;;;下面示例为活动的文档添加一条线段。直线的起点有一个短且窄的椭圆,终点有一个长且宽的三角形。
Const $msoArrowheadShort = 1
Const $msoArrowheadOval = 6
Const $msoArrowheadNarrow = 1
Const $msoArrowheadLong = 3
Const $msoArrowheadTriangle = 2
Const $msoArrowheadWide = 3

With $oDocActive.Shapes.AddLine(100, 200, 200, 300).Line
        .BeginArrowheadLength = $msoArrowheadShort
        .BeginArrowheadStyle = $msoArrowheadOval
        .BeginArrowheadWidth = $msoArrowheadNarrow
        .EndArrowheadLength = $msoArrowheadLong
        .EndArrowheadStyle = $msoArrowheadTriangle
        .EndArrowheadWidth = $msoArrowheadWide
EndWith

;;;下面示例将一个具有五个顶点的任意多边形添加至活动文档中。
Const $msoSegmentCurve = 1
Const $msoEditingCorner = 1
Const $msoEditingAuto = 0
Const $msoSegmentLine = 0
With $oDocActive.Shapes.BuildFreeform($msoEditingCorner, 360, 200)
        .AddNodes($msoSegmentCurve, $msoEditingCorner, 380, 230, 400, 250, 450, 300)
        .AddNodes($msoSegmentCurve, $msoEditingAuto, 480, 200)
        .AddNodes($msoSegmentLine, $msoEditingAuto, 480, 400)
        .AddNodes($msoSegmentLine, $msoEditingAuto, 360, 200)
        .ConvertToShape
EndWith

;;;下面例在当前文档中添加一个标注,然后设置标注的角度。
#cs
        在文档中添加画布。返回代表该画布的 Shape 对象,并将其添加到 Shapes 集合。
        .AddCanvas(Left, Top, Width, Height, Anchor)
        Left  Single 类型,     必需。画布左侧边缘相对于锁定标记的位置,以磅为单位。
        Top  Single 类型,      必需。画布上部边缘相对于锁定标记的位置,以磅为单位。
        Width  Single 类型,    必需。画布的宽度,以磅为单位。
        Height  Single 类型,   必需。画布的高度,以磅为单位。
        Anchor  Variant 类型,  可选。代表画布绑定文本的 Range 对象。
        如果指定 Anchor,则锁定标记将出现在锁定区域第一段的开头。
        如果省略该参数,将自动选定锁定区域,而画布将相对于页面的上部和左侧边缘进行定位。
#ce
;示例
Const $msoCalloutTwo = 2
Const $msoCalloutAngle30 = 2
_WordDocNewCallout($oDocActive)
Func _WordDocNewCallout($o_DocActive)
        
        With $o_DocActive.Shapes.AddCallout($msoCalloutTwo, 250, 180, 100, 80)
                .TextFrame.TextRange.Text = "在当前文档中添加一个标注."
                .Callout.Angle = $msoCalloutAngle30
        EndWith
        
EndFunc   ;==>_WordDocNewCallout

;;;下列示例在新文档中添加画布,然后在画布上添加两个图形,并设置填充和线条属性。

Const $wdWrapInline = 7
Const $msoShapeHeart = 21

_WordDocAddInlineCanvas($oDocActive)
Func _WordDocAddInlineCanvas($o_DocActive)


        $shpCanvas = $o_DocActive.Shapes.AddCanvas(150, 150, 70, 70)
        $shpCanvas.WrapFormat.Type = $wdWrapInline

        With $shpCanvas.CanvasItems
                .AddShape($msoShapeHeart, 10, 10, 50, 60)
                .AddLine(0, 0, 70, 70)
        EndWith
        With $shpCanvas
                .CanvasItems(1).Fill.ForeColor = 255
                .CanvasItems(2).Line.EndArrowheadStyle = $msoArrowheadTriangle
        EndWith

        
EndFunc   ;==>_WordDocAddInlineCanvas
;;;下列示例实现的功能是:将两个图形添至 myDocument,并组合这两个新图形,设置图形组合的填充格式,旋转此组合并将其置于绘图层的下面。
Const $msoShapeCan = 13
Const $msoShapeCube = 14
Const $msoTextureBlueTissuePaper = 17 ;(&H11)
Const $msoSendToBack = 1
$oDocActive.Shapes.AddShape($msoShapeCan, 150, 350, 100, 200).Name = "shpOne"
$oDocActive.Shapes.AddShape($msoShapeCube, 150, 550, 100, 200).Name = "shpTwo"
With $oDocActive.Shapes.Range(_ArrayCreate("shpOne", "shpTwo") ).Group
        .Fill.PresetTextured($msoTextureBlueTissuePaper)
        .Rotation = 45
        .ZOrder($msoSendToBack)
EndWith


;;;下列示例将一个用绿色大理石纹理填充的矩形添至活动文档中。
Const $msoTextureGreenMarble = 9
$oDocActive.Shapes.AddShape($msoShapeCan, 490, 490, 40, 80).Fill.PresetTextured($msoTextureGreenMarble)

;;;下列示例将包含文本“Test”的“艺术字”添加到活动文档中,并将文字由横排(指定“艺术字”样式的默认值,即 msoTextEffect1)转换为纵排。

Const $msoTextEffect1 = 0
$newWordArt = $oDocActive.Shapes.AddTextEffect($msoTextEffect1, "Test", "Arial Black", 36, False, False, 350, 100)
$newWordArt.TextEffect.ToggleVerticalText

;;;下列示例向活动文档添加三个三角形,并加以组合,为整个组合设置一个颜色,然后只更改第二个三角形的颜色。
Const $msoShapeIsoscelesTriangle = 7
;Const $msoTextureBlueTissuePaper = 17 ;(&H11)
;Const $msoTextureGreenMarble = 9
$oDocActive.Shapes.AddShape($msoShapeIsoscelesTriangle, _
                100, 600, 100, 100).Name = "shpOne"
$oDocActive.Shapes.AddShape($msoShapeIsoscelesTriangle, _
                240, 600, 100, 100).Name = "shpTwo"
$oDocActive.Shapes.AddShape($msoShapeIsoscelesTriangle, _
                390, 600, 100, 100).Name = "shpThree"
With $oDocActive.Shapes.Range(_ArrayCreate("shpOne", "shpTwo", "shpThree") ).Group
        .Fill.PresetTextured($msoTextureBlueTissuePaper)
        .GroupItems(2).Fill.PresetTextured($msoTextureGreenMarble)
EndWith


;;;本示例向活动文档添加两个十字形形状,并为每一个十字形设置第一种调整值(对于此类“自选图形”,该调整方式是唯一的)。
Const $msoShapeCross = 11

With $oDocActive.Shapes
    .AddShape($msoShapeCross, _
        10, 10, 100, 100).Adjustments.Item(1) = 0.4
    .AddShape($msoShapeCross, _
        150, 10, 100, 100).Adjustments.Item(1) = 0.2
EndWith

#cs
        ;;;向活动文档中添加一个矩形,然后设置矩形填充的前景色、背景色和过渡。
        .AddShape(Type, Left, Top, Width, Height, Anchor)
        expression   必需。该表达式返回一个 Shapes 对象。
        Type  Long 类型,     必需。要返回的图形类型。可以是任何 MsoAutoShapeType 常量。
        Left  Single 类型,   必需。“自选图形”对象左侧边缘的位置,以磅为单位。
        Top  Single 类型,    必需。“自选图形”对象上部边缘的位置,以磅为单位。
        Width  Single 类型,  必需。“自选图形”对象的宽度,以磅为单位。
        Height  Single 类型, 必需。“自选图形”对象的高度,以磅为单位。
        Anchor  Variant 类型,可选。代表该“自选图形”所连接文本的 Range 对象。
        如果指定 Anchor,则锁定标记位于锁定区域第一段的起始位置。
        如果忽略该参数,则 Word 将自动选定锁定区域,
        而自选图形将相对于页面的上部和左侧边缘进行定位。
#ce
_WordDocRectangle($oDocActive);向活动文档中添加一个矩形,
Func _WordDocRectangle($o_DocActive)
        
        With $o_DocActive.Shapes.AddShape($msoShapeRectangle, 250, 120, 90, 50).Fill
                .ForeColor.RGB = 128
                .BackColor.RGB = 170
                .TwoColorGradient($msoGradientHorizontal, 1)
        EndWith
EndFunc   ;==>_WordDocRectangle
发表于 2010-12-13 23:10:42 | 显示全部楼层
有时候我在想,调东西应该不是太难的,实际上不是那样的
发表于 2010-12-15 10:24:38 | 显示全部楼层
回复 1# clshuai
上面的连接地址无法登陆?
发表于 2010-12-17 00:11:35 | 显示全部楼层
坐下慢慢看
发表于 2011-5-10 18:14:27 | 显示全部楼层
坐下慢慢看
发表于 2011-5-12 10:54:56 | 显示全部楼层
留脚印备用
发表于 2011-5-12 18:00:43 | 显示全部楼层
看看怎么样
发表于 2011-5-19 18:35:53 | 显示全部楼层
先占个位置 慢慢消化
发表于 2011-6-16 08:47:50 | 显示全部楼层
回复 1# clshuai

不错。
就是在那里去找那些点后面的“方法”??
如:With $shpCanvas.CanvasItems
                .AddShape($msoShapeHeart, 10, 10, 50, 60)
                .AddLine(0, 0, 70, 70)
        EndWith
我怎么知道有“AddShape”, “AddLine”这样的方法?更别它的参数了?

如我要插入一个图片文件,应该怎么写?
发表于 2011-11-11 21:51:26 | 显示全部楼层
回复 1# clshuai


    太好了,感谢LZ分享。比那些动不动就要钱的好太多了。再一次谢谢
发表于 2011-11-12 09:03:06 | 显示全部楼层
发表于 2012-11-21 15:14:25 | 显示全部楼层
例子不错,有抛砖引玉的效果
发表于 2012-12-7 08:40:24 | 显示全部楼层
顶下楼主,谢谢分享
发表于 2012-12-7 10:50:37 | 显示全部楼层
好好学习一下!
发表于 2013-8-26 10:16:36 | 显示全部楼层
收藏,能否举个应用例子?
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-11-22 02:31 , Processed in 0.080116 second(s), 19 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表