本节介绍Excel提供的基本图形元素的创建,包括点、直线段、矩形、椭圆、多义线、多边形、贝塞尔曲线、标签、文本框、标注、自选图形、图表、艺术字等。
Excel对象模型中,用Shape对象表示图形,Shapes对象作为集合对所有图形进行保存和管理。通过编程创建图形的过程,就是创建Shape对象并利用它本身及与之相关的一系列对象的属性和方法进行编程的过程。[大谦Excel,dqexcel点com]
点
Shapes对象没有提供专门用于绘制点的方法,但是它提供的自选图形里面有若干特殊的图形类型可以用来表示点,比如星形、矩形、圆形、菱形等,这些自选图形可以用Shapes对象的AddShape方法创建。该方法的语法格式为:
【Excel VBA】
sht.Shapes.AddShape(Type, Left, Top, Width, Height)
【Python】
sht.api.Shapes.AddShape(Type, Left, Top, Width, Height)
Python采用的是xlwings包的API调用方式。sht表示一个工作表对象。该方法返回一个Shape对象,各参数的意义如表5-1所示。
表5-1 AddShape方法的参数说明
| 名 称 | 必需/可选 | 数据类型 | 说 明 |
|---|---|---|---|
| Type | 必需 | MsoAutoShapeType | 指定要创建的自选图形的类型 |
| Left | 必需 | Single | 自选图形边框左上角相对于文档左上角的位置 (以磅为单位) |
| Top | 必需 | Single | 自选图形边框左上角相对于文档顶部的位置 (以磅为单位) |
| Width | 必需 | Single | 自选图形边框的宽度(以磅为单位) |
| Height | 必需 | Single | 自选图形边框的高度(以磅为单位) |
其中,Type参数的值为msoAutoShapeType枚举类型,可以有很多的选择。表5-2中列出了一些星形点对应的常数和值。
表5-2 AddShape方法Type参数中星形点的取值
| 名 称 | 值 | 说 明 |
|---|---|---|
| msoShape10pointStar | 149 | 十角星 |
| msoShape12pointStar | 150 | 十二角星 |
| msoShape16pointStar | 94 | 十六角星 |
| msoShape24pointStar | 95 | 二十四角星 |
| msoShape32pointStar | 96 | 三十二角星 |
| msoShape4pointStar | 91 | 四角星 |
| msoShape5pointStar | 92 | 五角星 |
| msoShape6pointStar | 147 | 六角星 |
下面创建一个五角星、一个十二角星和一个三十二角星表示的点。
【Excel VBA】
示例文件的存放路径为Samples\ch17\Excel VBA\点.xlsm。
Sub Test()
ActiveSheet.Shapes.AddShape 92, 180, 80, 10, 10 '在指定位置添加点
ActiveSheet.Shapes.AddShape 150, 150, 40, 15, 15
ActiveSheet.Shapes.AddShape 96, 80, 80, 3, 3
End Sub
运行过程,生成图5-1所示的点。
【Python】
在Python Shell窗口输入下面的命令行:
>>> import xlwings as xw #导入xlwings
>>> bk=xw.Book() #新建工作簿
>>> sht=bk.sheets(1) #获取第1个工作表
>>> sht.api.Shapes.AddShape(92,180,80,10,10) #在指定位置添加点
>>> sht.api.Shapes.AddShape(150,150,40,15,15)
>>> sht.api.Shapes.AddShape(96,80,80,3,3)
生成图5-1所示的点。
图5-1 星形点
也可以用矩形和圆表示点,在5.1.3小节进行介绍。
直线段
用Shapes对象的AddLine方法创建直线段。该方法的语法格式为:
【Excel VBA】
sht.Shapes.AddLine(BeginX, BeginY, EndX, EndY)
【Python】
sht.api.Shapes.AddLine(BeginX, BeginY, EndX, EndY)
其中,sht表示一个工作表对象。参数BeginX, BeginY表示起点的横坐标和纵坐标,EndX, EndY表示终点的横坐标和纵坐标。该方法返回一个表示直线段的Shape对象。
下面在工作表sht中添加一个起点为(10,10),终点为(250, 250)的直线段。并设置该直线段的线型为圆点线,颜色为红色,线宽为5。关于直线段的属性编辑,在5.2.2小节有比较详细的介绍。
【Excel VBA】
示例文件的存放路径为Samples\ch17\Excel VBA\直线段.xlsm。
Sub Test()
Dim shp As Shape
Dim objLn As Object
'创建直线段Shape对象
Set shp = ActiveSheet.Shapes.AddLine(10, 10, 250, 250)
Set objLn = shp.Line '获取线形对象
objLn.DashStyle = 3 '设置线形对象的属性:线型、颜色和线宽
objLn.ForeColor.RGB = RGB(255, 0, 0)
objLn.Weight = 5
End Sub
运行过程,生成图5-2所示的直线段。
【Python】
在Python Shell窗口输入下面的命令行:
>>> shp=sht.api.Shapes.AddLine(10,10,250,250) #创建直线段Shape对象
>>> ln=shp.Line #获取线形对象
>>> ln.DashStyle=3 #设置线形对象的属性:线型、颜色和线宽
>>> ln.ForeColor.RGB=xw.utils.rgb_to_int((255, 0, 0))
>>> ln.Weight=5
生成图5-2所示的直线段。
图5-2 创建直线段
矩形、圆角矩形、椭圆和圆
用Shapes对象的AddShape方法创建矩形、圆角矩形、椭圆和圆。该方法在5.1.1小节进行了介绍,实际上是通过创建自选图形的方法来创建。该方法跟以上几种图形有关的Type参数取值如表5-3所示。其中,圆是特殊的椭圆,即横轴和纵轴相等的椭圆。
表5-3 AddShape方法相关的Type参数取值
| 名 称 | 值 | 说 明 |
|---|---|---|
| msoShapeRectangle | 1 | 矩形 |
| msoShapeRoundedRectangle | 5 | 圆角矩形 |
| msoShapeOval | 9 | 椭圆形 |
默认时生成的矩形和圆都是实心的,是矩形面和圆形面。设置它们的Fill属性返回对象的Visible属性的值为False,可以生成线形的矩形和圆。
本例向工作表sht中添加矩形、圆角矩形、椭圆和圆,皆为实心的面。
【Excel VBA】
示例文件的存放路径为Samples\ch17\Excel VBA\矩形椭圆.xlsm。
Sub Test()
ActiveSheet.Shapes.AddShape 1, 50, 50, 100, 200 '矩形区域
ActiveSheet.Shapes.AddShape 5, 100, 100, 100, 200 '圆角矩形区域
ActiveSheet.Shapes.AddShape 9, 150, 150, 100, 200 '椭圆区域
ActiveSheet.Shapes.AddShape 9, 200, 200, 100, 100 '圆区域
End Sub
运行过程,生成图5-3所示的矩形区域和椭圆区域。
【Python】
在Python Shell窗口输入下面的命令行:
>>> sht.api.Shapes.AddShape(1, 50, 50, 100, 200) #矩形区域
>>> sht.api.Shapes.AddShape(5, 100, 100, 100, 200) #圆角矩形区域
>>> sht.api.Shapes.AddShape(9, 150, 150, 100, 200) #椭圆区域
>>> sht.api.Shapes.AddShape(9, 200, 200, 100, 100) #圆区域
生成图5-3所示的矩形区域和椭圆区域。
下面生成没有填充的线形的矩形、圆角矩形、椭圆和圆。
【Excel VBA】
示例文件的存放路径为Samples\ch17\Excel VBA\矩形椭圆.xlsm。
Sub Test2()
Dim shp1 As Shape
Dim shp2 As Shape
Dim shp3 As Shape
Dim shp4 As Shape
Set shp1 = ActiveSheet.Shapes.AddShape(1, 50, 50, 100, 200) '矩形区域
Set shp2 = ActiveSheet.Shapes.AddShape(5, 100, 100, 100, 200) '圆角矩形区域
Set shp3 = ActiveSheet.Shapes.AddShape(9, 150, 150, 100, 200) '椭圆区域
Set shp4 = ActiveSheet.Shapes.AddShape(9, 200, 200, 100, 100) '圆区域
shp1.Fill.Visible = msoFalse
shp2.Fill.Visible = msoFalse
shp3.Fill.Visible = msoFalse
shp4.Fill.Visible = msoFalse
End Sub
运行过程,生成图5-4所示的矩形和椭圆。
【Python】
在Python Shell窗口输入下面的命令行:
>>> shp1=sht.api.Shapes.AddShape(1, 50, 50, 100, 200) #矩形
>>> shp1.Fill.Visible = False
>>> shp2=sht.api.Shapes.AddShape(5, 100, 100, 100, 200) #圆角矩形
>>> shp2.Fill.Visible = False
>>> shp3=sht.api.Shapes.AddShape(9, 150, 150, 100, 200) #椭圆
>>> shp3.Fill.Visible = False
>>> shp4=sht.api.Shapes.AddShape(9, 200, 200, 100, 100) #圆
>>> shp4.Fill.Visible = False
生成图5-4所示的矩形和椭圆。
图5-3 矩形、圆角矩形、椭圆和圆形面 图5-4 矩形、圆角矩形、椭圆和圆形线
多义线和多边形
使用Shapes对象的AddPolyline方法创建多义线和多边形。该方法的语法格式为:
【Excel VBA】
sht.Shapes.AddLine(BeginX, BeginY, EndX, EndY)
【Python】
sht.api.Shapes.AddPolyline(SafeArrayOfPoints)
其中,sht表示一个工作表对象。参数SafeArrayOfPoints指定多义线或多边形的顶点坐标。该方法返回一个表示多义线或多边形的Shape对象。各顶点用其横坐标和纵坐标对表示,全部顶点用一个二维列表表示。
下面给定顶点坐标,绘制一个多边形。
【Excel VBA】
示例文件的存放路径为Samples\ch17\Excel VBA\多义线多边形.xlsm。
Sub Test()
Dim pts(4, 1) As Single '顶点
pts(0, 0) = 10: pts(0, 1) = 10
pts(1, 0) = 50: pts(1, 1) = 150
pts(2, 0) = 90: pts(2, 1) = 80
pts(3, 0) = 70: pts(3, 1) = 30
pts(4, 0) = 10: pts(4, 1) = 10
ActiveSheet.Shapes.AddPolyline pts
End Sub
运行过程,生成图5-5所示的多边形区域。
【Python】
使用xlwings绘制多义线和多边形存在问题,这里使用另一个Python包comtypes来实现。该包跟win32com和xlwings类似,都是基于COM机制。
首先,在DOS命令窗口,用pip命令安装comtypes库:
pip install comtypes
然后在Python Shell窗口输入:
>>> #从comtypes包导入CreateObject函数
>>> from comtypes.client import CreateObject
>>> app2=CreateObject("Excel.Application") #创建Excel应用
>>> app2.Visible=True #应用窗口可见
>>> bk2=app2.Workbooks.Add() #添加工作簿
>>> sht2=bk2.Sheets(1) #获取第1个工作表
>>> pts=[[10,10], [50,150],[90,80], [70,30], [10,10]] #多边形顶点
>>> sht2.Shapes.AddPolyline(pts) #添加多边形区域
生成图5-5所示的多边形区域。
如果只生成多边形线条,设置表示多边形区域的Shape对象的Fill属性返回对象的Visible属性的值为False。
【Excel VBA】
示例文件的存放路径为Samples\ch17\Excel VBA\多义线多边形.xlsm。
Sub Test2()
Dim shp As Shape
Dim pts(4, 1) As Single
pts(0, 0) = 10: pts(0, 1) = 10
pts(1, 0) = 50: pts(1, 1) = 150
pts(2, 0) = 90: pts(2, 1) = 80
pts(3, 0) = 70: pts(3, 1) = 30
pts(4, 0) = 10: pts(4, 1) = 10
Set shp = ActiveSheet.Shapes.AddPolyline(pts)
shp.Fill.Visible = msoFalse
End Sub
运行过程,生成图5-6所示的多义线。
【Python】
在Python Shell窗口输入:
>>> pts=[[10,10], [50,150],[90,80], [70,30], [10,10]]
>>> shp=sht2.Shapes.AddPolyline(pts)
>>> shp.Fill.Visible=False #多义线
生成图5-6所示的多义线。
图5-5 多边形区域 图5-6 多义线
曲线
用Shapes对象的AddCurve方法创建曲线。该方法的语法格式为:
【Excel VBA】
sht.Shapes.AddLine(BeginX, BeginY, EndX, EndY)
【Python】
sht.api.Shapes.AddCurve(SafeArrayOfPoints)
其中,sht表示一个工作表对象。参数SafeArrayOfPoints指定贝塞尔曲线顶点和控制点的坐标。指定的点数始终为3n + 1,其中n为曲线的线段条数。该方法返回一个表示贝塞尔曲线的Shape对象。各顶点用其横坐标和纵坐标对表示,全部顶点用一个二维列表表示。
下面的示例向工作表sht中添加贝塞尔曲线。基于与5.1.5小节示例相同的原因,使用COMTypes包进行绘制。
【Excel VBA】
示例文件的存放路径为Samples\ch17\Excel VBA\曲线.xlsm。
Sub Test()
Dim pts(6, 1) As Single '顶点
pts(0, 0) = 0: pts(0, 1) = 0
pts(1, 0) = 72: pts(1, 1) = 72
pts(2, 0) = 100: pts(2, 1) = 40
pts(3, 0) = 20: pts(3, 1) = 50
pts(4, 0) = 90: pts(4, 1) = 120
pts(5, 0) = 60: pts(5, 1) = 30
pts(6, 0) = 150: pts(6, 1) = 90
ActiveSheet.Shapes.AddCurve pts
End Sub
运行过程,生成图5-7所示的贝塞尔曲线。
【Python】
在Python Shell窗口输入:
>>> from comtypes.client import CreateObject
>>> app2=CreateObject("Excel.Application")
>>> app2.Visible=True
>>> bk2=app2.Workbooks.Add()
>>> sht2=bk2.Sheets(1)
>>> pts=[[0,0],[72,72],[100,40],[20,50],[90,120],[60,30],[150,90]] #顶点
>>> sht2.Shapes.AddCurve(pts) #添加贝塞尔曲线
生成图5-7所示的贝塞尔曲线。
图5-7 贝塞尔曲线
标签
使用Shapes对象的AddLabel方法创建标签。该方法的语法格式为:
【Excel VBA】
sht.Shapes.AddLine(BeginX, BeginY, EndX, EndY)
【Python】
sht.api.Shapes.AddLabel(Orientation,Left,Top,Width,Height)
其中,sht表示一个工作表对象。各参数的说明如表5-4所示。该方法返回一个表示标签的Shape对象。
表5-4 AddLabel方法各参数的说明
| 名 称 | 必需/可选 | 数据类型 | 说 明 |
|---|---|---|---|
| Orientation | 必需 | msoTextOrientation | 标签中文本的方向 |
| Left | 必需 | Single | 标签左上角相对于文档左上角的位置 (以磅为单位) |
| Top | 必需 | Single | 标签左上角相对于文档顶部的位置 (以磅为单位) |
| Width | 必需 | Single | 标签的宽度(以磅为单位) |
| Height | 必需 | Single | 标签的高度(以磅为单位) |
Orientation参数表示标签中文本的方向,其取值如表5-5所示。
表5-5 Orientation参数的取值
| 名 称 | 值 | 说 明 |
|---|---|---|
| msoTextOrientationDownward | 3 | 朝下 |
| msoTextOrientationHorizontal | 1 | 水平 |
| msoTextOrientationHorizontalRotatedFarEast | 6 | 亚洲语言支持所需的水平和旋转 |
| msoTextOrientationMixed | -2 | 不支持 |
| msoTextOrientationUpward | 2 | 朝上 |
| msoTextOrientationVertical | 5 | 垂直 |
| msoTextOrientationVerticalFarEast | 4 | 亚洲语言支持所需的垂直 |
本示例向工作表sht中添加包含文本的垂直标签。
【Excel VBA】
示例文件的存放路径为Samples\ch17\Excel VBA\标签.xlsm。
Sub Test()
Dim shp As Shape
Set shp = ActiveSheet.Shapes.AddLabel(1, 100, 20, 60, 150) '添加标签
shp.TextFrame.Characters.Text = "Test Python Label" '标签文本
End Sub
运行过程,生成图5-8所示的标签。
【Python】
在Python Shell窗口输入:
>>> shp=sht.api.Shapes.AddLabel(1,100,20,60,150) #添加标签
>>> shp.TextFrame2.TextRange.Characters.Text ="Test Python Label" #标签文本
生成图5-8所示的标签。
图5-8 生成标签
文本框
用Shapes对象的AddTextbox方法生成文本框。该方法的调用格式和各参数的意义跟AddLabel方法的相同。
本示例向工作表sht中添加包含文本的文本框。
【Excel VBA】
示例文件的存放路径为Samples\ch17\Excel VBA\文本框.xlsm。
Sub Test()
Dim shp As Shape
Set shp = ActiveSheet.Shapes.AddTextbox(1, 10, 10, 100, 50)
shp.TextFrame.Characters.Text = "Test Box"
End Sub
运行过程,生成图5-9所示的文本框。
【Python】
在Python Shell窗口输入:
>>> shp=sht.api.Shapes.AddTextbox(1,10,10,100,50)
>>> shp.TextFrame2.TextRange.Characters.Text="Test Box"
生成图5-9所示的文本框。
图5-9 文本框
标注
用Shapes对象的AddCallout方法添加标注。该方法的语法格式为:
【Excel VBA】
sht.Shapes.AddLine(BeginX, BeginY, EndX, EndY)
【Python】
sht.api.Shapes.AddCallout(Type,Left,Top,Width,Height)
其中,sht表示一个工作表对象。各参数的说明如表5-6所示。该方法返回一个表示标注的Shape对象。
表5-6 AddCallout方法的参数设置
| 名称 | 必需/可选 | 数据类型 | 说 明 |
|---|---|---|---|
| Type | 必需 | MsoCalloutType | 标注线的类型 |
| Left | 必需 | Single | 标注边界框左上角相对于文档左上角的位置 (以磅为单位) |
| Top | 必需 | Single | 标注边界框左上角相对于文档顶部的位置 (以磅为单位) |
| Width | 必需 | Single | 标注边框的宽度(以磅为单位) |
| Height | 必需 | Single | 标注边框的高度(以磅为单位) |
Type参数的取值为MsoCalloutType枚举类型的值,如表5-7中所示,指定标注线的类型。
表5-7 AddCallout方法Type参数的取值
| 名 称 | 值 | 说 明 |
|---|---|---|
| msoCalloutFour | 4 | 由两条线段组成的标注线。 标注线附加在文本边界框的右侧 |
| msoCalloutMixed | -2 | 只返回值,表示其他状态的组合 |
| msoCalloutOne | 1 | 单线段水平标注线 |
| msoCalloutThree | 3 | 由两条线段组成的标注线。 标注线连接在文本边界框的左侧 |
| msoCalloutTwo | 2 | 单线段倾斜标注线 |
本示例向工作表sht中添加包含文本的标注。
【Excel VBA】
示例文件的存放路径为Samples\ch17\Excel VBA\标注.xlsm。
Sub Test()
Dim shp As Shape
Set shp = ActiveSheet.Shapes.AddCallout(2, 10, 10, 100, 50)
shp.TextFrame.Characters.Text = "Test Box"
End Sub
生成图5-10所示的标注框。
【Python】
在Python Shell窗口输入:
>>> shp=sht.api.Shapes. AddCallout(2, 10, 10, 100, 50)
>>> shp.TextFrame2.TextRange.Characters.Text="Test Box"
生成图5-10所示的标注框。
图5-10 标注
设置shp对象的Callout属性:
【Excel VBA】
示例文件的存放路径为Samples\ch17\Excel VBA\标注.xlsm。
Sub Test2()
Dim shp As Shape
Set shp = ActiveSheet.Shapes.AddCallout(2, 110, 40, 200, 60)
shp.TextFrame.Characters.Text = "Test Box"
shp.Callout.Accent = True
shp.Callout.Border = True
shp.Callout.Angle = 2
End Sub
生成图5-11所示的标注框。
【Python】
在Python Shell窗口输入:
>>> shp=sht.api.Shapes. AddCallout(2, 110, 40, 200, 60)
>>> shp.TextFrame2.TextRange.Characters.Text="Test Box"
>>> shp.Callout.Accent=True
>>> shp.Callout.Border=True
>>> shp.Callout.Angle=2
其中,Accent属性设置引线左侧的竖线,Border属性设置标注区域的外框,Angle属性设置引线的角度,这里设置为30度。生成图5-11。
图5-11 设置标注对象的属性
自选图形
所谓自选图形,是Excel预定义好的很多图形对象。使用Shapes对象的AddShape方法创建自选图形。前面我们用该方法创建了点、矩形、椭圆等图形。实际上,还有很多其他的图形类型,如表5-8中所示。
表5-8 部分自选图形
| 名 称 | 值 | 说 明 |
|---|---|---|
| msoShapeOval | 9 | 椭圆形 |
| msoShapeOvalCallout | 107 | 椭圆形标注 |
| msoShapeParallelogram | 12 | 斜平行四边形 |
| msoShapePie | 142 | 圆形 ("饼图"), 缺少部分 |
| msoShapeQuadArrow | 39 | 指向向上、向下、向左和向右的箭头 |
| msoShapeQuadArrowCallout | 59 | 带向上、向下、向左和向右的箭头的标注 |
| msoShapeRectangle | 1 | 矩形 |
| msoShapeRectangularCallout | 105 | 矩形标注 |
| msoShapeRightArrow | 33 | 右箭头 |
| msoShapeRightArrowCallout | 53 | 带右箭头的标注 |
| msoShapeRightBrace | 32 | 右大括号 |
| msoShapeRightBracket | 30 | 右小括号 |
| msoShapeRightTriangle | utf-8 | 直角三角形 |
| msoShapeRound1Rectangle | 151 | 有一个圆角的矩形 |
| msoShapeRound2DiagRectangle | 157 | 有两个圆角的矩形, 对角相对 |
| msoShapeRound2SameRectangle | 152 | 具有两个圆角的矩形, 共一侧 |
| msoShapeRoundedRectangle | 5 | 圆角矩形 |
| msoShapeRoundedRectangularCallout | 106 | 圆角矩形-形状标注 |
| …… |
下面的例子向工作表sht中添加矩形、平行四边形和一个笑脸图形。
【Excel VBA】
示例文件的存放路径为Samples\ch17\Excel VBA\自选图形.xlsm。
Sub Test()
ActiveSheet.Shapes.AddShape 1, 50, 50, 100, 200
ActiveSheet.Shapes.AddShape 12, 250, 50, 100, 100
ActiveSheet.Shapes.AddShape 17, 450, 50, 100, 100
End Sub
运行过程,生成图5-12所示的自选图形。
【Python】
在Python Shell窗口输入:
>>> sht.api.Shapes. AddShape(1, 50, 50, 100, 200)
>>> sht.api.Shapes. AddShape(12, 250, 50, 100, 100)
>>> sht.api.Shapes. AddShape(17, 450, 50, 100, 100)
生成图5-12所示的自选图形。
图5-12 生成自选图形
艺术字
用Shapes对象的AddTextEffect方法创建艺术字。该方法的语法格式为:
【Excel VBA】
sht.Shapes.AddTextEffect(PresetTextEffect,Text,FontName,FontSize,FontBold,FontItalic, Left, Top)
【Python】
sht.api.Shapes.AddTextEffect(PresetTextEffect,Text,FontName,FontSize,FontBold,FontItalic, Left, Top)
其中,sht为当前工作表,各参数的意义如表5-9中所示。
表5-9 AddTextEffect方法的参数
| 名 称 | 必需/可选 | 数据类型 | 说 明 |
|---|---|---|---|
| PresetTextEffect | 必需 | MsoPresetTextEffect | 预置文字效果 |
| Text | 必需 | String | 艺术字中的文字 |
| FontName | 必需 | String | 艺术字中所用字体的名称 |
| FontSize | 必需 | Single | 在艺术字中使用的字体的大小 (以磅为单位) |
| FontBold | 必需 | MsoTriState | 在艺术字中要加粗的字体 |
| FontItalic | 必需 | MsoTriState | 在艺术字中要倾斜的字体 |
| Left | 必需 | Single | 左上角点的横坐标 |
| Top | 必需 | Single | 左上角点的纵坐标 |
PresetTextEffect参数表示艺术字的效果。Excel预置了约50种效果,表5-10中列出了少部分。设置时给PresetTextEffect参数赋对应的值即可。
表5-10 PresetTextEffect参数的取值
| 名 称 | 值 | 说 明 |
|---|---|---|
| msoTextEffect1 | 0 | 第一个文本效果 |
| msoTextEffect2 | 1 | 第二个文本效果 |
| msoTextEffect3 | 2 | 第三个文本效果 |
| …… |
下面创建两种不同效果的艺术字。
【Excel VBA】
示例文件的存放路径为Samples\ch17\Excel VBA\艺术字.xlsm。
Sub Test()
ActiveSheet.Shapes.AddTextEffect 19, _
"学习Python", "Arial Black", 36, _
False, False, 10, 10
ActiveSheet.Shapes.AddTextEffect 25, _
"春眠不觉晓", "黑体", 40, _
False, False, 30, 50
End Sub
运行过程,生成如图5-13所示的艺术字。
【Python】
在Python Shell窗口输入:
>>> sht.api.Shapes.AddTextEffect(9,"学习Python","Arial Black",36,False,False,10,10)
>>> sht.api.Shapes.AddTextEffect(29,"春眠不觉晓","黑体",40,False,False,30,50)
生成如图5-13所示的艺术字。[大谦Excel,dqexcel点com]
图5-13 艺术字