ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
Python自动化办公应用大全 Excel 2021函数公式学习大典 Kutools for Office 套件发布 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: ii_snow

[求助] 求助:VBA批量无损导出图片,找遍全网也没找到答案

[复制链接]

TA的精华主题

TA的得分主题

发表于 2025-11-26 19:19 | 显示全部楼层
  1. Sub 批量保存B列中的图片() '按A列名称导出B列图片
  2.     Dim shp As Shape '定义shp为图形对象
  3.     Dim pth As String '定义路径变量
  4.     Dim N As Long
  5.     Application.ScreenUpdating = False
  6.     Application.DisplayAlerts = False
  7.     On Error Resume Next
  8.     pth = ActiveWorkbook.Path & "" & "测试导出图片" & ""
  9.     If Len(Dir(pth, vbDirectory)) = 0 Then MkDir pth
  10.     N = 0
  11.     For Each shp In ActiveSheet.Shapes '把当前表格里的每个图形赋值给shp
  12.         If shp.Type = msoPicture Or shp.Type = msoLinkedPicture Or shp.Type = msoAutoShape Or shp.Type = msoChart Then
  13.             Set Rng = shp.BottomRightCell '赋值RNG为图片所在的单元格
  14.             If Rng.Row <= 600 And Rng.Column = 2 Then '设定图片范围600张以内,图片位于B列
  15.                 N = N + 1
  16.                 ' 直接导出图片,保持原始格式
  17.                 shp.Export pth & Range(Rng.Address).Offset(0, -1) & "." & GetPictureFormat(shp)
  18.             End If
  19.         End If
  20.     Next
  21.     MsgBox "图片共" & N & "张已导出到" & pth & "文件夹中!请前往查看:)"
  22.     Application.ScreenUpdating = True
  23.     Application.DisplayAlerts = True
  24. End Sub

  25. ' 辅助函数:获取图片格式
  26. Function GetPictureFormat(shp As Shape) As String
  27.     Select Case shp.Type
  28.         Case msoPicture, msoLinkedPicture
  29.             On Error Resume Next
  30.             Dim picFormat As String
  31.             picFormat = shp.AlternativeText
  32.             If InStr(1, picFormat, ".") > 0 Then
  33.                 GetPictureFormat = Mid(picFormat, InStrRev(picFormat, ".") + 1)
  34.             Else
  35.                 GetPictureFormat = "png"
  36.             End If
  37.             On Error GoTo 0
  38.         Case Else
  39.             GetPictureFormat = "png"
  40.     End Select
  41. End Function
复制代码


评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2025-11-27 11:40 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
直接用zip解压就行了呢

TA的精华主题

TA的得分主题

发表于 2025-11-28 10:18 | 显示全部楼层
shape的名称,也就是窗格里那个,没什么用的,因为是允许重复的
至于放大,不管多大,都已经污染了

TA的精华主题

TA的得分主题

发表于 2025-11-29 23:21 来自手机 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
高度保密 发表于 2023-5-21 10:13
我这里win7,excel2016,导出不成功,显示导出0张图片

同样的问题

TA的精华主题

TA的得分主题

发表于 2025-11-29 23:22 来自手机 | 显示全部楼层
ykcbf1100 发表于 2025-11-26 19:18
借题练习,无损导出图片

win11  excel2024,没有导出文件
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2025-12-21 04:01 , Processed in 0.020293 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表