如何获取Excel新「嵌入单元格」功能插入图片的名称?
解决Office 365 Excel「嵌入单元格图片(Place in Cell)」的名称获取与存在判断问题
Office 365新增的「Place in Cell」嵌入单元格图片功能,和传统Picture.Insert(path)插入的悬浮式图片完全不同——这类内嵌图片不会出现在Shapes或Pictures集合里,所以你提供的两个遍历函数自然无法识别它们。
适配新功能的解决方案
针对这类内嵌图片,Excel提供了CellImages集合来管理,我们可以通过这个集合实现图片存在判断和名称获取:
1. 判断单元格是否存在内嵌图片
Public Function Is_PictureInCell_New() As Boolean ' 判断当前单元格是否包含Office 365内嵌图片 Is_PictureInCell_New = ActiveCell.HasImage End Function
2. 获取内嵌图片的名称
Public Function GetEmbeddedPictureName() As String ' 获取当前单元格内嵌图片的名称 Dim img As CellImage GetEmbeddedPictureName = vbNullString If ActiveCell.HasImage Then For Each img In ActiveSheet.CellImages If img.Range.Address = ActiveCell.Address Then GetEmbeddedPictureName = img.Name Exit For End If Next img End If End Function
关键说明
- 新功能的内嵌图片属于
CellImage对象,直接绑定在单元格上,而非悬浮在工作表层面,因此不会被Shapes或Pictures遍历到。 - 使用
Range.HasImage可以快速判断单元格是否有内嵌图片,无需遍历整个集合。 CellImage.Name返回图片的原始名称(若插入时保留),无原始名称时会生成类似Image_XX的标识。
内容的提问来源于stack exchange,提问作者Nostabo
相关产品推荐
相关产品推荐

