ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 图片导出问题

[复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-2-14 22:35 | 显示全部楼层
本帖已被收录到知识树中,索引项:Shape对象
香川群子 发表于 2012-2-14 16:35
楼主在Excel表格中插入了2万张图片……

这个,如果不是上当受骗,那就是发神经。呵呵。

香川群子 朋友!我绝对不是吃饱了撑的没事干,也不是发神经。是搞研究用的!!!!

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-2-14 22:42 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
香川群子 发表于 2012-2-13 17:10
上了个代码,你试试看:附件为测试例子:

我刚刚试过了,您这个代码,对于2万张图片的工作表,只能导出3张来!!!

点评

你还是换2007吧  发表于 2012-2-14 22:54

TA的精华主题

TA的得分主题

发表于 2012-2-14 23:34 | 显示全部楼层
本帖最后由 香川群子 于 2012-2-15 08:17 编辑
EJR 发表于 2012-2-14 22:42
我刚刚试过了,您这个代码,对于2万张图片的工作表,只能导出3张来!!!



呵呵,我附件中的代码,设置为每按一次按钮,只能导出3张图片:
If cnt = 3 Then Exit Do

你可以自己修改啊。改成100先试试:

If cnt = 100 Then Exit Do



TA的精华主题

TA的得分主题

发表于 2012-2-15 11:08 | 显示全部楼层
代码修改完成。

每次导出100张图片后强制保存一次,然后继续,直到全部图片导出。
好处是,可以强行中断。因为每导出100次就会保存做备份。
  1. Sub PicOutput()
  2. Redo:
  3.     If Err.Number <> 0 Then Err.Clear
  4.     n = ActiveSheet.Shapes.Count
  5.     For i = 1 To n
  6.         On Error GoTo Redo
  7.         ActiveSheet.Shapes(i).Select
  8.         ShpType = Selection.ShapeRange.Type
  9.         If ShpType = msoPicture Then
  10.             With Selection
  11.                 FileName = ThisWorkbook.Path & "" & .Name & ".gif"
  12.                 .Copy
  13.                 With ActiveSheet.ChartObjects.Add(0, 0, .Width + 2, .Height + 2).Chart
  14.                         .ChartArea.Border.LineStyle = 0
  15.                         .Paste
  16.                         .Export FileName, "gif"
  17.                         .Parent.Delete
  18.                 End With
  19.                 .Delete
  20.             End With
  21.             cnt = cnt + 1
  22.             m = m + 1
  23.             i = i - 1
  24.             If m Mod 100 = 0 Then '这一句代码的保存间隔,可以自己设定调整为任意正整数。
  25.                 ActiveWorkbook.Save
  26.                 cnt = 0
  27.                 GoTo Redo
  28.             End If
  29.         End If
  30.     Next
  31.    
  32.     If cnt = 0 Then
  33.         MsgBox "Total " & m & " Pictures Output OK" & vbCr & _
  34.                     n & " Shapes Remain, Output Finished !"
  35.         [a1].Select
  36.     Else
  37.         cnt = 0
  38.         GoTo Redo
  39.     End If
  40. End Sub
复制代码

PicOutput 100.zip

83.8 KB, 下载次数: 8

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-2-15 21:46 | 显示全部楼层
香川群子 发表于 2012-2-15 11:08
代码修改完成。

每次导出100张图片后强制保存一次,然后继续,直到全部图片导出。

感谢香川群子朋友!哪位帮忙再给个鲜花!!!{:soso_e163:}

TA的精华主题

TA的得分主题

发表于 2012-2-15 21:50 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
EJR 发表于 2012-2-15 21:46
感谢香川群子朋友!哪位帮忙再给个鲜花!!!

帮你献花了。{:soso_e163:}

TA的精华主题

TA的得分主题

发表于 2018-10-16 13:54 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2018-10-16 13:58 | 显示全部楼层
爱到天涯 发表于 2012-2-9 07:58
已经没有边框了。刚才仔细看了下录制宏,粘贴CHART为对象的时候,大家请注意,新建的CHART对象,默认的边框 ...

前辈,导出的图片不清晰,怎么办
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-22 02:03 , Processed in 0.035216 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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