You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何删除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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 19:44:49