1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > VBA应用笔记 -- 批量导出excel工作表中的图片

VBA应用笔记 -- 批量导出excel工作表中的图片

时间:2022-08-05 17:08:45

相关推荐

VBA应用笔记 -- 批量导出excel工作表中的图片

业务场景:

日常工作中,我们可能会遇到需要批量导出excel表中的图片的情况,按照网友的做法,批量导出excel中的图片主要有几种方法: 解压缩方法:可以通过将excel文件转成rar压缩文件,解压后将图片复制出来;转htm方法:将excel文件另存为htm文件,将图片复制出来;VBA导出方法:通过将图片转成chart对象,利用chart对象导出方法将图片批量导出。

这里主要记录一下使用VBA批量导出的方法。

例如:有如下一个工作表,需要将其中的图片批量导出


解决方案:

利用VBA遍历工作表中的所有shape对象,这里的shape对象包括了图片、图标、图表、艺术字、文本框、自定义形状等,由于shape对象没有提供export导出方法,所以通过新建chart对象,并将shape复制粘贴到chart对象中,借助chart对象提供的export方法将图片批量导出。具体参考代码如下:

Sub ExportSheetPictures()Dim shp, my_sheetSet my_sheet = Sheets("Sheet1")' 循环获取工作表中的shape对象For Each shp In my_sheet.Shapesshp.Copy' 新建空白chart对象,将shape对象复制粘贴到chart对象中With my_sheet.ChartObjects.Add(0, 0, shp.Width, shp.Height + 5).Chart.ChartArea.Border.LineStyle = 0.ChartArea.Select.Paste.Export ThisWorkbook.Path & "\" & shp.Name & ".png".Parent.DeleteEnd WithNextSet my_sheet = NothingEnd Sub

通过VBA运行后,图片被批量导出,结果如下:


总结:

注意点:

这里一定要加上.ChartArea.Select选中一下chart对象,再进行粘贴,否则可能出现导出图片为空白的情况。如果需要导出指定图片,比如指定类型或指定行列,可以使用shape对象的type属性、TopLeftCell属性进行筛选控制。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。