技巧1 导出工作表中的图片
有时需要将工作表中的图形对象保存为单独的图像文件,可以使用Export方法将工作表中的图片以文件形式导出,如下面的代码所示。
Sub
ExportShp()ShpShape
DimAs
Dim
FileNameAs StringEachIn
Sheet1.ShapesIf
Shp.Type=
msoPicture Then
ForShp
FileName=
ThisWorkbook.Path&\"\\\"&Shp.Name& \".gif\"Shp.Copy
With
Sheet1.ChartObjects.Add(0,0,
Shp.Width+28,Shp.Height+30).Chart
.Paste.ExportFileName,\"gif\".Parent.DeleteEnd WithEnd IfNext End Sub
代码解析:
ExportShp过程将Sheet1工作表的所有图片以文件形式导出到同一目录中。
第4行代码使用ForEach...Next语句遍历Sheet1工作表中的所有图形。
第5行代码判断图形的类型是否为图片,应用于Shape对象的Type属性返回或设置图形类型,可以为表格54‑1所示的
MsoShapeType常量之一。
常量
值
说明混合型图形自选图形没有边框线的标注图表批注任意多边形图形组合窗体控件线条链接式或内嵌OLE对象剪贴画或图片ActiveX件图片艺术字文本框组织结构图或其他图示
控
msoShapeT-2ypeMixedmsoAutoSh1ape
msoCallout2msoChart
3
msoComme4nt
msoFreefor5mmsoGroup6msoFormC8ontrolmsoLinemsoLinkedOLEObject
910
msoLinkedP11icture
msoOLECo12ntrolObjectmsoPicture13msoTextEff15ect
msoTextBox17msoDiagram
21表格 54MsoShapeType‑1常量
第6行代码使用字符串变量FileName记录需导出图形的路径和名称。
第7行代码复制图形,应用于Shape对象的Copy方法将对象复制到剪贴板。
第8行代码使用Add方法在工作表中添加一个图表,应用于
ChartObjects对象的Add方法创建新的嵌入图表,语法如下:
expression.Add(Left,Top,Width,Height)
参数expression是必需的,返回一个ChartObjects对象。
参数Left、参数Top是必需的,以磅为单位给出新对象的初始坐标,该坐标是相对于工作表上单元格A1的左上角或图表的左上角的坐标。
参数Width、参数Height是必需的,以磅为单位给出新对象的初始大小。第9行代码使用Paste方法将图形粘贴到新的嵌入图表中,应用于Chart对象的Paste方法将剪贴板中的图表数据粘贴到指定的图表中,语法如下:
expression.Paste(Type)
参数expression是必需的,返回一个Chart对象。
参数Type是可选的的,如果剪贴板中有图表,本参数指定要粘贴的图表信息。可为以下XlPasteType常量之一:xlFormats、
xlFormulas或xlAll。默认值为xlAll,如果剪贴板中是数据不是图表,则不能使用本参数。第10行代码使用Export方法将图表导出到同一目录中,应用于Chart对象的Export方法以图形格式导出图表,语法如下:
expression.Export(Filename,FilterName,
Interactive)
其中参数Filename是必需的,被导出的文件的名称。
第10行代码删除新建的图表。因为Chart对象是不能使用Delete方法直接删除的,应先使用Parent属性返回指定对象的父对象,然后使用Delete方法删除。