Excel VBA:如何删除特定范围内的图像

时间:2018-05-04 18:55:02

标签: excel vba excel-vba

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

我认为解决方案是在开始时添加一些代码,可以在导入新数据之前选择单元格区域中的图像并删除它们。

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

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

2 个答案:

答案 0 :(得分:0)

快速Google搜索(大多数问题都在一个地方或另一个地方被提出)得出了这个结果。它使用Excel Picture对象的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

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

答案 1 :(得分:0)

感谢。我也遇到过这个,但是遇到了问题。通过更多的研究,我能够让这些代码完成我想要的工作,

Sub DeleteImage()

Dim pic As Picture

ActiveSheet.Unprotect

For Each pic In ActiveSheet.Pictures
    If Not Application.Intersect(pic.TopLeftCell, range("H10:R24")) Is Nothing Then
        pic.Delete
    End If

Next pic

End Sub