当前位置: 首页 > article >正文

如何使用VBA识别Excel中的“单元格中的图片”(1/2)

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

http://www.kler.cn/a/370037.html

相关文章:

  • C# 网络协议第三方库Protobuf的使用
  • Selenium配合Cookies实现网页免登录
  • AIGC视频生成国产之光:ByteDance的PixelDance模型
  • jupyter notebook环境问题
  • JDBC实验测试
  • 第9章:Python TDD解决货币对象相等性比较难题
  • 着色器的认识
  • JMeter之JMX文件解释
  • Windows驱动开发(三)—— 驱动和应用层通信的几种方式
  • Openpyxl--学习记录
  • 【文心智能体 | AI大师工坊】如何使用智能体插件,完成一款旅游类智能体的开发,来体验一下我的智能体『​​​​​​​背包客』
  • 如何将 Excel 数据转换为 SQL 脚本:基于 Java 的全面解析
  • 问:数据库SQL优化实践整理?
  • python 相关
  • Android--简易计算器实现
  • Redis中Lua脚本的使用场景
  • 深度学习领域如何正确地读取视频
  • java OOP 对象操作
  • 关于<a-upload-dragger>实现选择文件夹,上传文件夹中符合要求的文件,并在所有符合要求文件上传完成后统一进行提示。这里面文件是直接上传到七牛云
  • 利用ChatGPT完成2024年MathorCup大数据挑战赛-赛道A初赛:台风预测与分析
  • springMVC中的请求拦截器
  • 【杂谈】城市规划教育的危与机
  • 力扣中等题——顺次数
  • ES6 运算符的扩展
  • mysql 8.0.20 winx64安装配置
  • 我的编程之旅——从新手到大神的蜕变