如何用VBA访问Excel 365「置于单元格内」的图片?
访问Excel 365单元格内嵌图片的VBA方案
1. 单元格内嵌图片的对象类型
这种通过「置于单元格内」功能插入的图片属于CellImage对象,是Excel 365专属的未完全公开对象,不属于传统的Shape或Picture对象。
2. 获取图片对象引用
可以直接通过目标单元格的CellImage属性获取引用,由于该属性未正式公开,需使用后期绑定方式访问:
Dim cellImg As Object ' 假设图片在Sheet1的A1单元格 Set cellImg = ThisWorkbook.Worksheets("Sheet1").Range("A1").CellImage ' 验证是否成功获取对象 If Not cellImg Is Nothing Then Debug.Print "已获取CellImage对象" End If
3. 获取图片相关信息的属性
拿到CellImage对象引用后,可通过以下属性获取所需信息:
- 原始文件名:
cellImg.FileName,返回如MyPicture.png的文件名 - 完整源路径:
cellImg.SourceFullName,返回图片插入时的完整路径(若插入后源文件移动,该值保留原始路径) - 原生尺寸:
- 高度:
cellImg.OriginalHeight(单位:像素) - 宽度:
cellImg.OriginalWidth(单位:像素)
- 高度:
- 其他元数据:
- 替代文本:
cellImg.AltText - 图片类型:
cellImg.ContentType(如image/png) - 是否为外部链接:
cellImg.IsLinked(布尔值,判断图片是嵌入还是外部链接)
- 替代文本:
注意事项
- 仅Excel 365最新版本支持该对象,旧版本无此属性
- 由于是未公开属性,微软可能在后续版本中调整属性名称或访问逻辑,使用时需做好兼容性测试
内容的提问来源于stack exchange,提问作者OE Option Explicit
相关产品推荐
相关产品推荐

