在如何在excel中用vba把图表导出为图片格式的文件?一文中介绍了用vba将各种类型的图表导出为独立的图片格式文件的方法,其实现原理就是利用chart对象的export方法把图表导出为文件。
对于非图表对象,可以先把该对象复制到剪贴板,然后再用Chart对象的Paste方法把它装入Chart对象中,最后就可以使用chart对象的export方法把图表导出为文件。
根据以上的原理分析,本文介绍将excel中的所有图形对象(不区分是否是图表)都导出为独立的图片格式文件的方法。
代码如下:
Sub QQ1722187970()
Dim oShape As Shape
Dim oChartObject As ChartObject
Dim oChart As Chart
Dim oWK As Worksheet
Dim sPath As String
Dim i As Long
Const msoChart = 3
i = 1
sPath = Excel.ThisWorkbook.Path & "\"
For Each oWK In Excel.ThisWorkbook.Worksheets
With oWK
For Each oShape In .Shapes
With oShape
'遍历所有图形对象,如果不是图表类型的,则转换为图表类型的
If .Type <> msoChart Then
.Copy
Set oChartObject = oWK.ChartObjects.Add(0, 0, .Width, .Height)
With oChartObject
.Chart.Paste
End With
End If
End With
Next
For Each oChartObject In .ChartObjects
With oChartObject
.Chart.Export sPath & i & ".bmp"
i = i + 1
End With
Next
End With
Next
For Each oChart In Excel.ThisWorkbook.Charts
With oChart
.Export sPath & i & ".bmp"
i = i + 1
End With
Next
MsgBox "所有图表导出完毕!!!"
End Sub


发表评论