分享成果,随喜正能量】老天不给你困难,你又如何看透人心;老天不给你失败,你又如何发现身边的人是真是假;老天不给你孤独,你又如何反思自省;老天不给你生命中配上君子和小人,你又如何懂得提高智商!

《VBA之Word应用》,是我推出第八套教程,教程是专门讲解VBA在Word中的应用,围绕“面向对象编程”讲解,首先让大家认识Word中VBA的对象,以及对象的属性、方法,然后通过实例让大家感受到Word VBA 的妙处。本套教程共三册十六章,今日内容为第九章:Shapes对象和Shape对象的第4节:VBA在文档中添加图形及填充颜色

第四节 Shape对象的属性(一)

大家好,我们这节开始Shape对象的属性讲解,Shape对象代表绘图层中的对象,例如自选图形、任意多边形、OLE 对象、ActiveX 控件或图片。Shape对象是Shapes集合的成员, 其中包括文档的主要部分或文档的所有页眉和页脚中的所有形状。

有三个代表形状的对象:

1)Shapes集合,该集合代表文档中的所有形状;

2)ShapeRange对象,表示文档中的形状的指定子集。例如, shaperange对象可以代表文档中的第一和第四个形状, 也可以代表文档中的所有选定形状;

3)Shape对象, 该对象代表文档中的单个形状。

如果您需要同时处理几个形状,或处理选定区域中的多个形状,请使用 ShapeRange 集合。

本讲将给大家讲解Shape对象的AutoShapeType属性、CanvasItems 属性、Fill属性。

1 Shape.AutoShapeType属性

该属性返回或设置指定的shape对象的图形类型, 该对象不是代表线条或任意多边形, 而是代表自选图形。MsoAutoShapeType 类型(这个枚举值在第二节有介绍)

语法:expression.AutoShapeType

其中expression 是必须的,代表一个Shape对象的变量.

  1. 改变一个形状的类型时,该形状保留其大小、颜色和其他属性。

2 Shape.CanvasItems属性

该属性返回一个CanvasShapes对象, 该对象代表绘图画布上的形状的集合。

语法:expression.CanvasItems

其中expression 是必须的,代表一个Shape对象的变量。

3 Shape.Fill属性

该属性返回一个FillFormat对象, 该对象包含指定形状的填充格式属性。 此为只读属性。

语法:expression.Fill

其中expression 是必须的,代表一个Shape对象的变量.

4 实例:图形的添加及颜色的填充

这节我们给大家展示一个实例,这个实例中先在活动文档中创建一个新的绘图画布,并在其上添加一个圆和16角星型。然后向 myDocument 添加一个矩形,然后为其设置前景色、背景色和矩形填充的渐变类型,最后将活动文档中的所有16角星形替换为32角星形,我们看代码:

Sub mynzC()

'活动文档中创建一个新的绘图画布,并在其上添加一个圆和16星型。

Dim myCanvas As Shape

Set myCanvas = ActiveDocument.Shapes.AddCanvas(Left:=100, Top:=75, Width:=150, Height:=400)

myCanvas.CanvasItems.AddShape Type:=msoShapeOval, Top:=25, Left:=25, Width:=150, Height:=150

myCanvas.CanvasItems.AddShape Type:=msoShape16pointStar, Top:=200, Left:=25, Width:=150, Height:=150

'向 myDocument 添加一个矩形,然后为其设置前景色、背景色和矩形填充的渐变类型。

With ActiveDocument.Shapes.AddShape(msoShapeRectangle, 280, 100, 150, 150).Fill

.ForeColor.RGB = RGB(128, 0, 0)

.BackColor.RGB = RGB(170, 170, 170)

.TwoColorGradient msoGradientHorizontal, 1

End With

ActiveDocument.Shapes.AddShape msoShape16pointStar, 280, 280, 150, 150

'将活动文档中的所有 16 磅星形替换为 32 磅星形

Dim myDoc As Document

Dim myShp As Shape

Set myDoc = ActiveDocument

For Each myShp In myDoc.Shapes

If myShp.AutoShapeType = msoShape16pointStar Then

myShp.AutoShapeType = msoShape32pointStar

End If

Next

End Sub

代码截图:

代码讲解:(略)

代码的运行效果:

今日内容回向:

1 Word中Shape对象的AutoShapeType属性、CanvasItems 属性、Fill属性的意义是什么?

2 如何利用VBA在当前文档中添加图形及颜色的填充?

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

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

分享成果,随喜正能量】老天对我们每个人都是公平的,有人让你哭了,一定会有人让你笑。

举报/反馈
相关文章