如何使用VBA识别Excel中的"单元格中的图片"
创作时间:
作者:
@小白创作中心
如何使用VBA识别Excel中的"单元格中的图片"
引用
CSDN
1.
https://m.blog.csdn.net/taller_2000/article/details/143284386
Excel 365升级了新功能,支持两种不同的插入图片方式:
- 放置在单元格中(Place in cell),新功能,此操作插入的图片下文中简称为单元格中的图片。
- 放置在单元格上(Place over cell),悬浮图片,Excel以前版本一直支持的功能。
两种方式在Excel中的展示效果如下图所示。
如果希望使用VBA操作单元格中的图片,非常遗憾的是对象模型中并未提供相应的对象,并且该对象不隶属与Shapes或者Pictures对象集合。这就带来的一个棘手的问题,如何使用VBA代码判断一个单元格中是否包含单元格中的图片。
示例代码如下:
Function HasPicInCell(rCell As Range) As Boolean
Dim ShpCnt As Long, Sht As Worksheet
Set Sht = rCell.Parent
ShpCnt = Sht.Shapes.Count
rCell.PlacePictureOverCells
If Sht.Shapes.Count = 0 Then
HasPicInCell = False
Else
HasPicInCell = (ShpCnt < Sht.Shapes.Count)
Dim Shp: Set Shp = Sht.Shapes(Sht.Shapes.Count)
ActiveCell.Select
Shp.Select
Shp.PlacePictureInCell
End If
End Function
【代码解析】
第3行代码获取单元格所在工作表对象。
第4行代码获取Shapes对象个数。
第5行代码将单元格中的图片转换为单元格上的图片(Shape对象),如果不存在单元格中的图片,此行代码并不产生运行时错误,因此无法使用错误捕获方式来实现此功能。
第6行代码判断工作表的Shapes对象个数是否为零,如果满足条件,第7行代码返回False,即不存在单元格中的图片。
否则,第9行代码设置返回值,如果第5行代码执行后,Shapes对象个数增加,说明存在单元格中的图片。
第10行代码获取最后一个Shape对象,即被转换单元格中的图片。
第11行代码看到多余,笔者使用Excel 365 [Version 2411 (Build 18210.20000)],如果不增加此行代码,将导致Excel崩溃,估计是Excel的Bug。
第12行代码选中Shape对象。
第13行代码将Shaped对象转换为单元格中的图片。
使用如下代码核查A1单元格是否存在单元格中的图片。
Sub Demo()
Dim c As Range
Set c = Range("A1")
Debug.Print IIf(HasPicInCell(c), "", "不") & "存在单元格中的图片"
End Sub
热门推荐
从HR视角揭秘:如何写出一份让HR拍手叫好的简历?
秋招必备:用WPS打造完美简历
用专业术语让你的简历C位出道!
1963年,中国出生人口近3000万——30年的寻找,我们一
鹦鹉要怎么养?家养鹦鹉有哪些注意事项?
少府穴是什么
李四光的科普力作:《穿过地平线》中的科学与人文之美
重庆主城都市区:22个区县的高质量发展蓝图
一文读懂市区、城区、城市建成区的区别?
秋冬养生必备:黑芝麻的多重功效与食用指南
高产芝麻品种推荐:专家教你选种秘籍
十堰公安:一体化作战提升队伍战斗力,多措并举保障道路交通安全
JFIF图片格式深度解析:技术控必读!
Photoshop教你轻松搞定JFIF转JPG!
斯蒂芬·肖尔镜头下的以色列:从加利利到内盖夫
从特拉维夫到耶路撒冷:一场穿越时空的以色列之旅
【悦读】南宋·陆游《卜算子·咏梅》赏析及同步练习
中医体质辨识:社区高血压管理的新路径
专家解读:中医体质辨识与个性化养生方案
宋代医书双璧:《圣济总录》与《太平圣惠方》
仁和元气茯苓八珍足贴:正确使用方法与效果解析
丽江古城区文旅品牌建设经验:四大着力点打造世界文化旅游名城
万象和四千美岛必打卡景点推荐
四千美岛:老挝隐藏的自然奇观
万象和四千美岛:老挝旅游的黄金组合
胡歌重返春晚引热议:从童星到实力派的蜕变之路
秋冬打卡苏州最美景点:苏博、沧浪亭、金鸡湖
2025春晚幕后揭秘:从撒贝宁眉毛到《栋梁》创演秀
春晚《栋梁》:当非遗文化遇上XR技术
《借伞》爆笑春晚,沈腾马丽遗憾收场