ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] VBA导出的图片和原始图片不一致

[复制链接]

TA的精华主题

TA的得分主题

发表于 2018-8-2 09:47 | 显示全部楼层 |阅读模式
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
我的Excel有一张png图片,属性是:Width*Height = 225*160像素,Bit depth = 8位,然后我参照论坛里的VBA代码(Chart.Export那一套),图片导出了,但是属性是:Width*Height = 300*214像素,Bit depth = 32位!我想可能问题出在下面几个地方:
1,Shape对象存储图片时,属性已经变化了
2,Shape.CopyPicture
复制到系统剪贴板的时候,Shape属性发生变化
3,Chart.Paste
粘贴到Chart控件时,属性发生变化,不知道剪贴板如何控制粘贴格式的,比如Bit depth设为8位是不是就好了
4,Chart.Export
导出的时候,属性发生变化

请问有什么办法可以做到导出的图片和原始属性一模一样呢?

TA的精华主题

TA的得分主题

发表于 2018-8-2 09:53 | 显示全部楼层
另存为网页                                                                                                               

TA的精华主题

TA的得分主题

发表于 2018-8-2 09:58 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2018-8-2 10:30 | 显示全部楼层
用winRAR等解压缩软件打开*.xlsx工作簿文件,可以在\xl\media里看到插入到工作簿中的.png文件,所以问题不是出在第1步,而是出在copyPicture这一步,copyPicture以后再查看剪贴板,其中的格式已经变了。
要手动提取.png文件,用我上面说的解压缩软件的方法就可以,如果编程解决,需要按zip格式先解析*.xlsx文件,取得压缩后的字节段的起始位置和长度以及压缩前的长度,提取到byte数组中,然后用API函数解压缩

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-8-2 19:57 | 显示全部楼层
小fisher 发表于 2018-8-2 10:30
用winRAR等解压缩软件打开*.xlsx工作簿文件,可以在\xl\media里看到插入到工作簿中的.png文件,所以问题不 ...

“copyPicture以后再查看剪贴板,其中的格式已经变了”,如果你确认过的话,我觉得大概就是这个原因了。你说的zip编程这个就麻烦了,一般舍弃。
后来我找到了VBA的Shape.ScaleHeight和ScaleWidth解决了宽高问题,找到了Shape.PictureFormat.ColorType = msoPictureGrayscale这个能使Bit depth是8位,但图片用Beyond Compare还是有一些差异,不过 225*160 Bit depth 32 和 225*160 Bit depth 8 用Beyond Compare可以近似相等,这对于批量比较能凑合通过。
其实我是在Python中用的这些VBA,所以如果像你所说的“剪贴板格式变化”,那Python或VBA是不是可以改粘贴格式呢(假如有Bit depth属性的话)?

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-8-2 19:58 | 显示全部楼层
小花鹿 发表于 2018-8-2 09:53
另存为网页                                                                                           ...

我只要和原文件一模一样的png图片。

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-8-2 19:58 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2018-8-2 22:03 | 显示全部楼层
dmxjMao 发表于 2018-8-2 19:58
我只要和原文件一模一样的png图片。

另存为网页,里面就有图片文件,和原来的图片是一样的
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2025-1-11 10:58 , Processed in 0.028294 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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