暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

VBA在当前文档中添加任意多边形并填上阴影

VBA语言専攻 2022-08-25
285
分享成果,随喜正能量】如春良言暖三冬,逆耳良言利于行。一句善良的话,看似微小,或许严苛,却呵护着我们生命中最柔软的部分,化解了更多灾难。
《VBA之Word应用》,是我推出第八套教程,教程是专门讲解VBA在Word中的应用,围绕“面向对象编程”讲解,首先让大家认识Word中VBA的对象,以及对象的属性、方法,然后通过实例让大家感受到Word VBA 的妙处。本套教程共三册十六章,今日内容为第九章:Shapes对象和Shape对象的第2节:VBA在当前文档中添加任意多边形并填上阴影

第三节 Shapes集合对象的方法(三)

大家好,我们这节继续Shapes集合对象方法的讲解,在上节中我们讲解了Shapes集合对象的AddShape方法、AddLabel方法、AddLine方法,这节的内容是Shapes集合的AddTextbox方法、BuildFreeform方法、BuildFreeform方法。

1  Shapes.AddTextbox方法

这个方法在绘图画布上添加一个文本框。
语法:expression.AddTextbox(Orientation,Left,Top,Width,Height)
其中expression 是必须的代表一个Shapes集合的对象.
参数:
1)Orientation   必需   MsoTextOrientation   文本的方向。 其中某些常量可能不可用,这取决于您所选择或安装的语言支持 (例如美国英语)。
2)Left   必需   Single   文本框左边缘的位置(以磅为单位)。
3)Top   必需   Single   文本框上边缘的位置(以磅为单位)。
4)Width   必需   Single   文本框的宽度(以磅为单位)。
5)Height   必需   Single   文本框的高度(以磅为单位)。

MsoTextOrientation 枚举值:参考上节内容

2  Shapes.BuildFreeform方法

这个方法建立任意多边形对象。
语法:expression.BuildFreeform(EditingType,X1,Y1)
其中expression 是必须的代表一个Shapes集合的对象.
参数:
 1)EditingType   必需   MsoEditingType   第一个顶点的编辑属性。
2)X1   必需   Single   任意多边形第一个顶点相对于文档左边缘的位置(以磅为单位)。
3)Y1   必需   Single   任意多边形第一个顶点相对于文档上边缘的位置(以磅为单位)。

MsoEditingType 枚举值:
1)msoEditingAuto   0   编辑类型适合于正在连接的线段。
2)msoEditingCorner   1   角部节点。
3)msoEditingSmooth   2   平滑结点。
4)msoEditingSymmetric    3   对称节点。

l使用 AddNodes 方法添加任意多边形的线段。至少一个段添加到任意多边形的形状后,可以使用 ConvertToShape方法将FreeformBuilder对象转换为Shape对象,该对象具有已定义的 FreeformBuilder对象中的几何描述。
lFreeformBuilder 对象代表构建任意多边形时的几何形状.

3  Shapes.SelectAll 方法

这个方法选择形状集合中的所有形状。
语法:expression.SelectAl
其中expression 是必须的代表一个Shapes集合的对象.

l此方法不会选择InlineShape对象。 不能使用此方法选择多个画布。

4  实例:在当前文档中添加任意多边形并填上阴影

这节的实例是在当前文档中添加任意的多边形,并填上阴影效果,我们看下面的代码:
Sub mynzB()
    Dim myDoc As Document
    Dim myCanvas As Shape
    Set myDoc = ActiveDocument
    '添加一个具有五个顶点的任意多边形添加到活动文档中
    With myDoc.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
    End With

    '添加一个画布,并在画布上添加一个文本框
    Set myCanvas = myDoc.Shapes.AddCanvas(Left:=100, Top:=75, Width:=150, Height:=200)
    myCanvas.CanvasItems.AddTextbox Orientation:=msoTextOrientationHorizontal, Left:=1, Top:=1, Width:=100, Height:=30

    '添加一个12角星
    myDoc.Shapes.AddShape msoShape12pointStar, 100, 300, 100, 80

    '并给每一个形状添加红色阴影
    myDoc.Shapes.SelectAll
    With Selection.ShapeRange.Shadow
        .Type = msoShadow10
        .ForeColor.RGB = RGB(220, 0, 0)
    End With
End Sub

代码截图:

代码的解读:(略)

代码的运行效果:

今日内容回向:
  1  Word中Shapes集合对象的AddTextbox 方法、BuildFreeform 方法、BuildFreeform 方法的意义是什么?
  2  如何利用VBA在当前文档中添加任多边形?




本讲内容参考程序文件:Doc 009文档.docm


我20多年的VBA实践经验,全部浓缩在下面的各个教程及应用工具中:


分享成果,随喜正能量】安静的心,静看世间万物;浮躁的心,在得失、聚散中纠缠。。


文章转载自VBA语言専攻,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论