Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel VBA:如何删除特定范围内的图像_Vba_Excel - Fatal编程技术网

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

Excel VBA:如何删除特定范围内的图像,vba,excel,Vba,Excel,我有一个从选定文件导入数据的宏。数据包括一些图像。我遇到的问题是,如果我的文档中已经有数据和图像,并且我要导入新的数据,这些图像不会删除,而是简单地粘贴在彼此的顶部。我编写了代码来选择单元格并清除它们,但它没有清除图像 我认为解决方案是在导入新数据之前,在开始时添加一些代码,可以选择单元格范围内的图像并将其删除 我遇到了一个解决方案,可以选择工作表中的所有图像并将其删除,但我还需要保留其他图像 可以告诉它选择特定单元格范围内的所有图像吗?一个快速的谷歌搜索(大多数问题都是在一个地方或另一个地方提

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

我认为解决方案是在导入新数据之前,在开始时添加一些代码,可以选择单元格范围内的图像并将其删除

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

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

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

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

谢谢。我也遇到过这个问题,但有一些问题。通过更多的研究,我能够让这段代码做我想做的事情

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