首页 > 解决方案 > Excel VBA:如何删除特定范围内的图像

问题描述

我有一个从选定文件导入数据的宏。数据包括一些图像。我遇到的问题是,如果我的文档中已经有数据和图像,并且我去导入新数据,图像不会删除,而是简单地粘贴在彼此之上。我编写了代码来选择单元格并清除它们,但它不会清除图像。

我认为解决方案是在导入新数据之前在开头放置一些代码,可以选择单元格范围内的图像并删除它们。

我遇到了一个解决方案,可以选择工作表中的所有图像并删除它们,但我还有其他图像需要保留。

是否可以告诉它选择特定单元格范围内的所有图像?

标签: vbaexcel

解决方案


一个快速的谷歌搜索(大多数问题都在一个地方或另一个地方被问过)得出了这个结果。它使用 Excel 图片对象的 TopLeftCell 和 BottomRightCell 属性,然后检查它是否在范围内。

Sub test()
'Code by Peter T from https://www.excelbanter.com/excel-programming/404480-select-delete-all-pictures-given-range.html
Dim s As String
Dim pic As Picture
Dim rng As Range

' Set ws = ActiveSheet
Set ws = ActiveWorkbook.Worksheets("Sheet2")

Set rng = ws.Range("A5:C25")

For Each pic In ActiveSheet.Pictures
    With pic
        s = .TopLeftCell.Address & ":" & .BottomRightCell.Address
    End With
    If Not Intersect(rng, ws.Range(s)) Is Nothing Then
        pic.Delete
    End If
Next

End Sub

我没有测试过这段代码,但即便如此,它也应该为您提供足够的信息来调整您自己的代码。


推荐阅读