如何使用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
热门推荐
【多彩贵州的红色家底】走进仁怀:探寻红色文化足迹,开启红色传承之旅
记忆的盲点:从神经元细胞核角度理解学习与记忆
如何确保科学实验仪器设备的准确性和稳定性
劳务分包班组合法吗?法律性质与合规分析
婚姻宫是什么意思 婚姻宫怎么看
扬州最出名的老街:老字号商铺林立美食遍地,见证广陵城千年变迁
司马迁为什么说匈奴是夏朝遗民?
【西方史料】揭秘匈人的真实面貌
AI驱动智能运维:提升效率、减少故障的运维智能化解决方案
画作赏析:秋韵中的生灵赞歌,赏析于学平“鸡”主题绘画作品
Nature Medicine最新研究:孕期健康状况如何影响自闭症风险?
松果体的作用与功能是什么
出现下面3种征兆,说明贵人在找你,别错过
安徽大学排名多少 全国第几位(2025最新)
水芙蓉的种植技巧和养护注意事项
提高OpenMV图像处理效率:OpenMV图像处理优化
影楼如何管理客户流程
暗黑2圣骑士技能加点大揭秘!双热与祝福之锤,谁才是你的最佳选择?
Excel表格中时间格式怎么统一
SGLT2抑制剂:糖尿病治疗的新选择
九阳豆浆机所有灯亮怎么办?三种实用解决方案
沈阳洗浴成消费者休闲放松“首选之地”
尾盘选股的技巧有哪些?这些技巧在不同市场环境下的效果如何?
生姜发膜养发护发:原理、效果与使用指南
马兰头孕妇能吃吗?孕期吃马兰头要注意哪些事?
马兰头——何时品尝最佳?(季节、口感、健康,全方位解读马兰头。)
对称的汉字有哪些,汉字之美:探寻对称结构的魅力
朱砂莲花手串有何寓意?它代表了什么?
支原体肺炎的“二线药物”——多西环素,该如何正确使用?
支原体肺炎的“二线药物”——多西环素,该如何正确使用?