如何删除Excel 2019工作表所有单元格中的图片?VBA删形状无效
解决Excel 2019中无法通过删除Shapes移除单元格内图片的问题
你之前尝试循环删除Shapes集合没成功,核心原因是:单元格内的嵌入型图片不属于Shapes对象,而是归Pictures集合管理——Excel对嵌入图片、浮动形状、OLE对象有明确的分类,不同类型要对应不同的集合操作。
直接删除所有嵌入型图片
如果目标是清理单元格内的嵌入图片,直接遍历Pictures集合即可:
Sub DeleteAllEmbeddedPics() Dim pic As Picture For Each pic In ActiveSheet.Pictures pic.Delete Next pic End Sub
一次性清理工作表所有图片(嵌入+浮动)
如果要同时移除浮动图片(比如拖到单元格外的图片)和嵌入图片,可以同时处理Pictures和Shapes集合:
Sub WipeAllImagesFromSheet() Dim targetSheet As Worksheet Set targetSheet = ThisWorkbook.Worksheets("Sheet1") ' 替换成你的工作表名称 ' 删除嵌入型图片 Dim pic As Picture For Each pic In targetSheet.Pictures pic.Delete Next pic ' 删除所有形状(含浮动图片、文本框等) Dim i As Integer ' 必须倒序遍历,否则删除后索引移位会跳过部分对象 For i = targetSheet.Shapes.Count To 1 Step -1 targetSheet.Shapes(i).Delete Next i End Sub
特殊情况:删除OLE插入的图片
如果你的图片是通过「插入→对象」添加的(比如插入的Word图片对象),需要处理OLEObjects集合:
Sub DeleteOLEBasedImages() Dim oleObj As OLEObject For Each oleObj In ActiveSheet.OLEObjects ' 过滤出图片类OLE对象 If oleObj.ProgID Like "*Picture*" Or oleObj.ProgID Like "*Image*" Then oleObj.Delete End If Next oleObj End Sub
内容的提问来源于stack exchange,提问作者Todd Wolford
相关产品推荐
相关产品推荐

