Excel VBA:如何删除特定范围内的图像
我有一个从选定文件导入数据的宏。数据包括一些图像。我遇到的问题是,如果我的文档中已经有数据和图像,并且我要导入新的数据,这些图像不会删除,而是简单地粘贴在彼此的顶部。我编写了代码来选择单元格并清除它们,但它没有清除图像 我认为解决方案是在导入新数据之前,在开始时添加一些代码,可以选择单元格范围内的图像并将其删除 我遇到了一个解决方案,可以选择工作表中的所有图像并将其删除,但我还需要保留其他图像 可以告诉它选择特定单元格范围内的所有图像吗?一个快速的谷歌搜索(大多数问题都是在一个地方或另一个地方提出的)得出了这个结果。它使用Excel图片对象的TopLeftCell和BottomRightCell属性,然后检查是否在范围内Excel VBA:如何删除特定范围内的图像,vba,excel,Vba,Excel,我有一个从选定文件导入数据的宏。数据包括一些图像。我遇到的问题是,如果我的文档中已经有数据和图像,并且我要导入新的数据,这些图像不会删除,而是简单地粘贴在彼此的顶部。我编写了代码来选择单元格并清除它们,但它没有清除图像 我认为解决方案是在导入新数据之前,在开始时添加一些代码,可以选择单元格范围内的图像并将其删除 我遇到了一个解决方案,可以选择工作表中的所有图像并将其删除,但我还需要保留其他图像 可以告诉它选择特定单元格范围内的所有图像吗?一个快速的谷歌搜索(大多数问题都是在一个地方或另一个地方提
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
我还没有测试过这段代码,但即使如此,它也应该为您提供足够的信息来调整您自己的代码。谢谢。我也遇到过这个问题,但有一些问题。通过更多的研究,我能够让这段代码做我想做的事情
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