ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 如何将一张图片一键拉伸填充满一个单元格?

[复制链接]

TA的精华主题

TA的得分主题

发表于 2020-6-6 07:08 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 coleman_lee 于 2020-6-7 07:47 编辑

如何将一张图片一键拉伸填充满一个单元格?我有很多图片,需要逐一使用“Alt+鼠标拖拽”的方法填充满单元格,一个一个拖拽效率低。有没有宏或者什么办法能实现:
  • 一键填充(把指定或单元格区域内图片填充满指定单元格)?
补充说明:
  • 不需要统一图片大小功能,因为不同文件内,图片大小不一样。
  • 不需要从文件夹外自动导入图片的功能,因为图片命名没有规律。
  • 图片的纵横比例可以变化,因为要填充满单元格。
  • 不需要自动插入并填充,因为手工插入图片后需要进行长宽比例的裁剪及明暗度调节,然后才应用“填充满”操作。
  • 工作表内有六张图片需要进行填充操作,如果能在图片裁剪好后,一键把六张图片自动填充满对应的单元格就更完美了。(我可以手工把图片缩小到单元格边框以内,想下图二这样)。

图一
06-06.jpg

图二
06-45.jpg


-------------------------------------------------------------
更新:2020年6月7日
-------------------------------------------------------------
我找到了解决办法,主要是参考了论坛帖子http://club.excelhome.net/thread-918859-1-1.html的无私分享的网友@qdzhxg的代码,在此非常感谢这位朋友。我的代码如下:
主要功能为:
  • 将当前活动Sheet里所有的图片取消纵横比锁定。
  • 以每个图片最左上角所处单元格为对象,将图片缩放充满这个单元格,图片距离单元格四条边缘各3像素距离(这个距离在代码里可调)。
使用注意事项:
  • 为了防止图片缩放之后失真,可以在执行宏之前,手工把图片用Excel的裁剪工具裁剪为合适的长宽比。

  1. Option Explicit
  2. Sub PicAutofit()
  3.     Dim Pic As Object
  4.     Dim mySheet As Object
  5.     Dim rng As Range
  6.    
  7.     For Each Pic In ActiveSheet.Shapes
  8.         'Disable picture aspect ratio
  9.         Set mySheet = ActiveSheet
  10.         mySheet.Pictures.ShapeRange.LockAspectRatio = msoFalse
  11.         'Set size and position
  12.         Set rng = Pic.TopLeftCell
  13.         With Pic
  14.             .Height = rng.Height - 6
  15.             .Width = rng.Width - 6
  16.             .Top = rng.Top + 3
  17.             .Left = rng.Left + 3
  18.             .Placement = xlMoveAndSize
  19.         End With
  20.     Next
  21. End Sub
复制代码
运行宏之前:一开始图片大小不一,且都设置了纵横比锁定。
07-24_0.jpg

07-25.jpg

运行宏程序之后,所有图片都自动设置了大小和边距。

07-28.jpg

如果有人只想按照长宽比拉伸图片,不想图片变形,那可以使用论坛帖子http://club.excelhome.net/thread-918859-1-1.html的无私分享的网友@qdzhxg的代码,他的代码实现了如下功能:
  • 图片只会一侧接触边框,宽度先缩放到边框了,则高度就不动了会留白。反之宽度会留白。






评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2020-6-6 09:30 来自手机 | 显示全部楼层
vba代码可以做到

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-6-6 20:23 | 显示全部楼层

我看了论坛里的代码,但是改来改去也没该出我想要的效果。

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-6-7 07:54 | 显示全部楼层
分享一个VBA代码格式化工具,可以将不对齐的代码一键对齐。
http://demon.tw/tool/vbs-beautifier.html

TA的精华主题

TA的得分主题

发表于 2021-9-10 15:25 | 显示全部楼层
确实有效果,
但如果碰到合并单元格该怎么办?
代码如何修改?

TA的精华主题

TA的得分主题

发表于 2022-12-16 16:12 | 显示全部楼层
zxdzzqzxd 发表于 2021-9-10 15:25
确实有效果,
但如果碰到合并单元格该怎么办?
代码如何修改?

有找到合并单元格图片填充代码了吗?

TA的精华主题

TA的得分主题

发表于 2022-12-16 16:15 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
但如果碰到合并单元格该怎么办? 代码如何修改?

TA的精华主题

TA的得分主题

发表于 2022-12-16 16:40 | 显示全部楼层
image.jpg
image.jpg
WPS有个功能,图片比例不变,嵌入到里面,但是仅限于WPS再打开使用。这个功能也算WPS为数不多的优势之一了。

TA的精华主题

TA的得分主题

发表于 2023-12-5 11:13 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
有没有办法对合并的单元格生效?

TA的精华主题

TA的得分主题

发表于 2023-12-5 14:43 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-12-25 14:13 , Processed in 0.044795 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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