ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] VBA代码能再Excel2016版本上完美运行,为什么在Excel 365版本上却运行不.

[复制链接]

TA的精华主题

TA的得分主题

发表于 2023-4-2 23:49 | 显示全部楼层
vistababy 发表于 2023-4-2 18:48
当然想更省事的话,可以在for i=1那句前面加上:

Application.ScreenUpdating = False

正解  
因为如果 <>100%  当你插入的图片很多,例如1-10000行每行一个图片时
会发现下面的图片位置错位了
这是Excel的bug  所以=100% 就不会出现此问题

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2023-4-3 10:36 | 显示全部楼层
opiona 发表于 2023-4-2 23:49
正解  
因为如果 100%  当你插入的图片很多,例如1-10000行每行一个图片时
会发现下面的图片位置错位了
...

1万行?每行一个图片??这么多?一般是做啥类型的文件?

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-4-3 11:42 | 显示全部楼层
vistababy 发表于 2023-4-2 18:48
当然想更省事的话,可以在for i=1那句前面加上:

Application.ScreenUpdating = False

谢谢大神啊,其实我再表述问题的时候,是想要把这个问题加上去了,原因是我到处图片的时候,就算成功了,但是导出来的图片像素很低,但是当我全选图片,然后大小缩放到100%的时候,在运行代码,导出来的图片的像素是oKay,完全没想到可以这么加多几行代码啊,哈哈

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-4-3 11:47 | 显示全部楼层
vistababy 发表于 2023-4-2 21:19
我还有方法2,就是在导出前将图片放大,导出后缩小。图片也能变大变清晰一些。对排版没有影响。

这样放大五倍其实是可以的,但会出现一个问题,比如我的插入图片的时候,可能存在部分图片的纵横比没有锁定,缩放的时候图片变形了,直接放大5倍,图片还是变形的。但如果手动选中所有图片,然后缩放比例写100%,并且锁定纵横比,这样图片就会恢复原样,不会变形。就是不知道这代码要怎么写了。哈哈

TA的精华主题

TA的得分主题

发表于 2023-4-3 11:50 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
vistababy 发表于 2023-4-3 10:36
1万行?每行一个图片??这么多?一般是做啥类型的文件?

不要低估大家遇到的复杂情况
所以编程人员 必须时刻考虑到极端情况 如何处理

此Bug时我给一个客户制作商品一览表时发现的
当图片添加的3W后 从1W行开始错位明显

TA的精华主题

TA的得分主题

发表于 2023-4-3 12:22 | 显示全部楼层
本帖最后由 vistababy 于 2023-4-3 13:12 编辑
thomasxian84 发表于 2023-4-3 11:47
这样放大五倍其实是可以的,但会出现一个问题,比如我的插入图片的时候,可能存在部分图片的纵横比没有锁 ...

在If pic.Type = 11 Or pic.Type = 13 Then的下面增加一行代码:
pic.ScaleHeight 1, msoTrue
一翻循环下来,就能恢复所有图片原始比例,但这行并不会导致图片变大,只是恢复原始比例。所以导出来以后图片不会变形了。我拿一张图片压扁以后,原来导出是扁的,加了这行代码,正常了。试过。

TA的精华主题

TA的得分主题

发表于 2023-4-3 12:37 | 显示全部楼层
opiona 发表于 2023-4-3 11:50
不要低估大家遇到的复杂情况
所以编程人员 必须时刻考虑到极端情况 如何处理

一般这么多行,都是在电脑上看的,不会打印到纸上。如果把行高像楼主一样弄高一些,图片在中间,单元格周边有很多空余。也会错位?
我拿楼主的文件通过代码复制那5个图2000次,凑成10000行,怎么弄都没有错位。

截屏_2023-04-03_12-37-01.png

TA的精华主题

TA的得分主题

发表于 2023-4-3 12:56 | 显示全部楼层
本帖最后由 vistababy 于 2023-4-3 13:10 编辑

在Excel设置---高级里面,有个图片压缩的选项,如果选择不压缩,插入的图片多,插入一个图片1MB,文件体积就大1MB,文件体积非常恐怖,。
但启用了以后,图片压缩厉害。
拿导出5张图片为例,通过9楼代码调显示比例到400%导出,速度还是很快的。
如果拿10楼的代码将图片先放大5倍甚至10倍,速度明显变慢,尤其是10倍,5张都能卡死,导出的每张图片平均有4、5MB以上,但清晰度比9楼导出的并无明显提升。


截屏_2023-04-03_12-49-56.png

TA的精华主题

TA的得分主题

发表于 2023-4-10 12:23 | 显示全部楼层
插入图片时,定位出现严重偏差

原因找到了:Excel2007在缩小印刷的时候,图片位置会发生偏差。微软承认这个现象的存在。
设定了缩小或者放大的状态Excel样本文件(Template File)里插入的图片位置偏差估计也是这个问题造成的。
解决方法:
因为放大率100%的状态下设置的图片不会位置偏差,
所以在插入图片之前暂时设定放大率为100%(sheet.ActiveWindow.Zoom = 100), 图片设定完之后再把放大率给设回去。


https://club.excelhome.net/thread-1475836-1-1.html
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-17 19:02 , Processed in 0.043032 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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