找回密码
 加入
搜索
查看: 13005|回复: 23

[原创] au3与Word之应用

 火.. [复制链接]
发表于 2008-5-5 20:27:23 | 显示全部楼层 |阅读模式
自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
发表于 2008-5-10 22:57:26 | 显示全部楼层
不错,大家共同努力啊
发表于 2008-5-10 23:01:07 | 显示全部楼层
用到WORD的确少之又少。不过都是用到了再翻帮助。
发表于 2008-9-1 15:10:24 | 显示全部楼层
虽然没用到..但是还是又学了一个知识.谢谢啊.
发表于 2008-9-1 22:06:11 | 显示全部楼层
只用到过对excel的应用
发表于 2009-1-23 10:49:46 | 显示全部楼层
又学一招,受益匪浅
发表于 2009-1-29 12:37:22 | 显示全部楼层
能不能画一个4*3的表格啊,高手在吗?你的相关的东西在那里能找到帮助啊
发表于 2009-1-30 16:03:06 | 显示全部楼层
本人不才。我知下在的东西一定有用,请搞程序,或vb 、C的高手帮忙一下。搞一个3*4的表格吧
---------------------------------------------
http://msdn.microsoft.com/zh-cn/worldwide/w1702h4a.aspx

如何:创建 Word 表

更新:2007 年 11 月

适用对象

本主题中的信息仅适用于指定的 Visual Studio Tools for Office 项目和 Microsoft Office 版本。

项目类型

文档级项目

应用程序级项目

Microsoft Office 版本

Word 2003

Word 2007

有关更多信息,请参见按应用程序和项目类型提供的功能。


Tables 集合是 Microsoft.Office.Interop.Word..::.Document、Microsoft.Office.Tools.Word..::.Document、Selection 和 Range 类的成员,这意味着您可以在其中任何上下文中创建一个表。可以使用 Tables 集合的 Add 方法在指定的范围添加表。

在文档级自定义项中创建表
向文档中添加简单的表
使用 Add 方法在文档开头添加一个由三行四列组成的表。

若要使用下面的代码示例,请从项目内的 ThisDocument 类中运行此示例。

Visual Basic 复制代码
Dim tableLocation As Word.Range = Me.Range(Start:=0, End:=0)
Me.Tables.Add(Range:=tableLocation, NumRows:=3, NumColumns:=4)

C# 复制代码
object start = 0;
object end = 0;

Word.Range tableLocation = this.Range(ref start, ref end);
this.Tables.Add(tableLocation, 3, 4, ref missing, ref missing);


创建表时,该表会自动添加到 Microsoft.Office.Tools.Word..::.Document 宿主项的 Tables 集合中。然后,您可以使用 Item 属性按表的项编号引用该表,如以下代码所示。

通过项编号引用表
使用 Item 属性并提供要引用的表的项编号。

若要使用下面的代码示例,请从项目内的 ThisDocument 类中运行此示例。

Visual Basic 复制代码
Dim newTable As Word.Table = Me.Tables.Item(1)

C# 复制代码
Word.Table newTable = this.Tables[1];


每个 Table 对象还有一个 Range 属性 (property),通过该属性可以设置格式设置属性 (attribute)。

对表应用样式
使用 Style 属性对表应用 Word 内置样式之一。

若要使用下面的代码示例,请从项目内的 ThisDocument 类中运行此示例。

Visual Basic 复制代码
Me.Tables.Item(1).Range.Font.Size = 8
Me.Tables.Item(1).Style = "Table Grid 8"

C# 复制代码
object styleName = "Table Grid 8";

this.Tables[1].Range.Font.Size = 8;
this.Tables[1].set_Style(ref styleName);


在应用程序级外接程序中创建表
向文档中添加简单的表
使用 Add 方法在文档开头添加一个由三行四列组成的表。

下面的代码示例向活动文档中添加表。若要使用此示例,请从项目内的 ThisAddIn 类中运行此示例。

Visual Basic 复制代码
Dim tableLocation As Word.Range = Me.Application.ActiveDocument.Range(Start:=0, End:=0)
Me.Application.ActiveDocument.Tables.Add(Range:=tableLocation, NumRows:=3, NumColumns:=4)

C# 复制代码
object start = 0;
object end = 0;

Word.Range tableLocation =
    this.Application.ActiveDocument.Range(ref start, ref end);
this.Application.ActiveDocument.Tables.Add(
    tableLocation, 3, 4, ref missing, ref missing);


创建表时,该表会自动添加到 Microsoft.Office.Interop.Word..::.Document 的 Tables 集合中。然后,您可以使用 Item 属性按表的项编号引用该表,如以下代码所示。

通过项编号引用表
使用 Item 属性并提供要引用的表的项编号。

下面的代码示例使用活动文档。若要使用此示例,请从项目内的 ThisAddIn 类中运行此示例。

Visual Basic 复制代码
Dim newTable As Word.Table = Me.Application.ActiveDocument.Tables.Item(1)

C# 复制代码
Word.Table newTable = this.Application.ActiveDocument.Tables[1];


每个 Table 对象还有一个 Range 属性 (property),通过该属性可以设置格式设置属性 (attribute)。

对表应用样式
使用 Style 属性对表应用 Word 内置样式之一。

下面的代码示例使用活动文档。若要使用此示例,请从项目内的 ThisAddIn 类中运行此示例。

Visual Basic 复制代码
Me.Application.ActiveDocument.Tables.Item(1).Range.Font.Size = 8
Me.Application.ActiveDocument.Tables.Item(1).Style = "Table Grid 8"

C# 复制代码
object styleName = "Table Grid 8";

this.Application.ActiveDocument.Tables[1].Range.Font.Size = 8;
this.Application.ActiveDocument.Tables[1].set_Style(ref styleName);


请参见
任务
如何:向 Word 表中的单元格添加文本和格式设置
如何:向 Word 表添加行和列
如何:用文档属性填充 Word 表
概念
了解 Office 解决方案中的可选参数
=====================================
发表于 2009-2-5 09:43:06 | 显示全部楼层
不错哦 不知道AU3能不能调用EXCEL WORD对工作来讲用处不大
发表于 2009-8-5 09:06:49 | 显示全部楼层
不错的东西  持续关注
发表于 2009-8-20 18:18:06 | 显示全部楼层
来,留个脚印,谢谢。
发表于 2009-9-26 03:03:48 | 显示全部楼层
画了表格后,不知道能不能向指定的表格中加入指定的文字或图片
发表于 2010-3-12 20:26:04 | 显示全部楼层
au3 操作word挺有意思的,大家不妨研究一下。
发表于 2010-3-17 15:05:54 | 显示全部楼层
谢谢分享。
发表于 2010-3-18 10:23:17 | 显示全部楼层
好东西 不得不顶
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-5-2 13:14 , Processed in 0.080164 second(s), 19 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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