分享

文档中图形及子图形的处理

 樵夫1964 2022-04-18
《VBA之Word应用》,是我推出第八套教程,教程是专门讲解VBA在Word中的应用,围绕“面向对象编程”讲解,首先让大家认识Word中VBA的对象,以及对象的属性、方法,然后通过实例让大家感受到Word VBA 的妙处。本套教程共三册十六章,今日内容第七章  “Word中的Selection对象”,第2节:文档中图形及子图形的处理图片

第二节 Selection 对象的属性(二)

大家好,我们继续Selection对象属性的讲解,在上一讲中我们讲解了Selection对象Characters属性、End属性、Start属性,我们这节的内容是Selection对象的ChildShapeRange 属性、ShapeRange属性、Fields属性。

1  Selection.ChildShapeRange属性

此属性返回一个ShapeRange集合, 该集合代表所选内容中包含的子图形。
语法:expression.ChildShapeRange
其中expression为一个代表Selection对象的变量。

2  Selection.ShapeRange属性

此属性返回一个ShapeRange集合, 该集合代表选定内容中的所有Shape对象。此为只读属性。
语法:expression.ShapeRange
其中expression为一个代表Selection对象的变量。

l形状范围可以包含图形、形状、图片、OLE 对象、ActiveX 控件、文字对象和标注。

3  Selection.Fields属性

此属性返回一个只读的fields集合, 该集合代表选定内容中的所有域。
语法:expression. Fields
其中expression为一个代表Selection对象的变量。

实例:图形及子图形的处理

我们这节的实例我们来看一下图形和子图形的处理。这节中我们首先在当前文档最后插入时间及作者,利用的是Fields属性;紧接着,我们要新建一个文档,在这个文档中先添加两个矩形,并设置阴影;之后,我们添加一个画布,在画布中添加一个矩形及圆形,并用填充点填充。

我们看下面的代码:

Sub mynzA()
    '在当前文档最后插入时间及作者
    t = ActiveDocument.Content.End - 1
    Set myRange = ActiveDocument.Range(Start:=t, End:=t)
    myRange.Select
    With Selection
        .Collapse Direction:=wdCollapseStart
        .Fields.Add Range:=Selection.Range, Type:=wdFieldDate
        .Fields.Add Range:=Selection.Range, Type:=wdFieldAuthor
    End With
    '创建新的文档并添加图形
    Dim myDoc As Document
    Dim myShp As Shape
    Set myDoc = Documents.Add
    '添加两个矩形,并给有图形设置阴影
    myDoc.Shapes.AddShape msoShapeRectangle, 350, 0, 100, 80
    myDoc.Shapes.AddShape msoShapeRectangle, 350, 100, 100, 100
    myDoc.Content.ShapeRange.Select
    Selection.ShapeRange.Shadow.Type = msoShadow6
    '添加一个画布,在画布中添加形状矩形和圆形
    Set myShp = myDoc.Shapes.AddCanvas(Left:=100, Top:=100, Width:=200, Height:=200)
    myShp.CanvasItems.AddShape msoShapeRectangle, Left:=0, Top:=0, Width:=100, Height:=100
    myShp.CanvasItems.AddShape msoShapeOval, Left:=0, Top:=50, Width:=100, Height:=100
    '选择画布中的图形,添加填充
    myShp.CanvasItems.SelectAll
    Selection.ChildShapeRange.Fill.Patterned msoPatternDivot
End Sub

代码截图:
图片


代码解读:
1) t = ActiveDocument.Content.End - 1
    Set myRange = ActiveDocument.Range(Start:=t, End:=t)
    myRange.Select
    With Selection
        .Collapse Direction:=wdCollapseStart
        .Fields.Add Range:=Selection.Range, Type:=wdFieldDate
        .Fields.Add Range:=Selection.Range, Type:=wdFieldAuthor
End With
以上代码在当前文档最后插入时间及作者,其中t为文档的最终位置。
2) Set myDoc = Documents.Add
以上代码创建新的文档
3) myDoc.Shapes.AddShape msoShapeRectangle, 350, 0, 100, 80
    myDoc.Shapes.AddShape msoShapeRectangle, 350, 100, 100, 100
    myDoc.Content.ShapeRange.Select
Selection.ShapeRange.Shadow.Type = msoShadow6
 以上代码添加两个矩形,并给有图形设置阴影。
4)Set myShp = myDoc.Shapes.AddCanvas(Left:=100, Top:=100, Width:=200, Height:=200)
 以上代码添加一个画布。
5)myShp.CanvasItems.AddShape msoShapeRectangle, Left:=0, Top:=0, Width:=100, Height:=100
myShp.CanvasItems.AddShape msoShapeOval, Left:=0, Top:=50, Width:=100, Height:=100
以上代码在画布中添加形状矩形和圆形
6)myShp.CanvasItems.SelectAll
Selection.ChildShapeRange.Fill.Patterned msoPatternDivot
以上代码选择画布中的图形,添加填充

代码的运行效果:
图片
图片

今日内容回向:
  1  Word中Selection对象的Selection对象的ChildShapeRange 属性、ShapeRange属性、Fields属性的意义是什么?
  2  如何利用VBA添加图形及日期域?
本讲内容参考程序文件:Doc 007文档.docm
图片

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

图片
图片

 孩子若是平凡之辈,那就承欢膝下;若是出类拔萃,那就展翅高飞;接受孩子的平庸,就像孩子从来没有要求父母,一定要有多么优秀一样。穷不怪父,孝不比兄,苦不责妻,气不凶子。。


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多