我有一个从所选文件导入数据的宏。数据包括一些图像。我遇到的问题是,如果我的文档中已有数据和图像,并且我要导入新数据,图像不会删除,只是粘贴在彼此之上。我编写了代码来选择单元格并清除它们,但它并没有清除图像。
我认为解决方案是在开始时添加一些代码,可以在导入新数据之前选择单元格区域中的图像并删除它们。
我遇到了一个解决方案,选择工作表中的所有图像并删除它们,但我还有其他需要保留的图像。
是否可以告诉它选择特定细胞范围内的所有图像?
答案 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