xwjsyyx 发表于 2008-5-5 20:27:23

au3与Word之应用

自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)
        LeftSingle 类型,   必需。画布左侧边缘相对于锁定标记的位置,以磅为单位。
        TopSingle 类型,      必需。画布上部边缘相对于锁定标记的位置,以磅为单位。
        WidthSingle 类型,    必需。画布的宽度,以磅为单位。
        HeightSingle 类型,   必需。画布的高度,以磅为单位。
        AnchorVariant 类型,可选。代表画布绑定文本的 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 对象。
        TypeLong 类型,   必需。要返回的图形类型。可以是任何 MsoAutoShapeType 常量。
        LeftSingle 类型,   必需。“自选图形”对象左侧边缘的位置,以磅为单位。
        TopSingle 类型,    必需。“自选图形”对象上部边缘的位置,以磅为单位。
        WidthSingle 类型,必需。“自选图形”对象的宽度,以磅为单位。
        HeightSingle 类型, 必需。“自选图形”对象的高度,以磅为单位。
        AnchorVariant 类型,可选。代表该“自选图形”所连接文本的 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

ollydbg 发表于 2008-5-10 22:57:26

不错,大家共同努力啊

sanhen 发表于 2008-5-10 23:01:07

用到WORD的确少之又少。不过都是用到了再翻帮助。

amgloon 发表于 2008-9-1 15:10:24

虽然没用到..但是还是又学了一个知识.谢谢啊.:face (33):

ken0137 发表于 2008-9-1 22:06:11

只用到过对excel的应用

ndyndy 发表于 2009-1-23 10:49:46

又学一招,受益匪浅

yuheduo 发表于 2009-1-29 12:37:22

能不能画一个4*3的表格啊,高手在吗?你的相关的东西在那里能找到帮助啊

yuheduo 发表于 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;


每个 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.Range.Font.Size = 8;
this.Tables.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;


每个 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.Range.Font.Size = 8;
this.Application.ActiveDocument.Tables.set_Style(ref styleName);


请参见
任务
如何:向 Word 表中的单元格添加文本和格式设置
如何:向 Word 表添加行和列
如何:用文档属性填充 Word 表
概念
了解 Office 解决方案中的可选参数
=====================================

xrbenbeba 发表于 2009-2-5 09:43:06

不错哦 不知道AU3能不能调用EXCEL WORD对工作来讲用处不大

rabbitshee 发表于 2009-8-5 09:06:49

不错的东西持续关注

心照不宣 发表于 2009-8-20 18:18:06

来,留个脚印,谢谢。

jevonleen 发表于 2009-9-26 03:03:48

画了表格后,不知道能不能向指定的表格中加入指定的文字或图片

zhangla 发表于 2010-3-12 20:26:04

au3 操作word挺有意思的,大家不妨研究一下。

kangtachen 发表于 2010-3-17 15:05:54

谢谢分享。

YoDe 发表于 2010-3-18 10:23:17

好东西 不得不顶
页: [1] 2
查看完整版本: au3与Word之应用