2

В некоторых моих листах я вижу картинки, а в Excel отображаются такие имена, как "График 4". Теперь я хочу удалить их автоматически. У меня есть 200 файлов Excel, всегда с одной и той же картинкой и одним и тем же именем. Я попробовал это так:

Sub Clear_Images()
    Dim directory As String, fileName As String ', sheet As Worksheet, i As  Integer, j As Integer
    Dim wks As Worksheet
    Dim myPict As Shape

    Application.ScreenUpdating = False

    directory = "C:\Users\"
    fileName = Dir(directory & "*.xl??")

    Do While fileName <> ""
        Workbooks.Open (directory & fileName)

        For Each wks In ActiveWorkbook.Worksheets
            For Each myPict In wks.Shapes
                If myPict.Name = "Grafik 4" Then
                    myPict.Delete
                End If
            Next myPict
        Next wks
        Set wks = Nothing

        Workbooks(fileName).Close
        fileName = Dir()
    Loop

    Application.ScreenUpdating = True
End Sub

Но в VBA каждая картинка, кажется, имеет название "Объект x" (x - числа от 1-открытого). У кого-нибудь есть идея, как я могу зачитать настоящее название картины?

Бест, Франц

1 ответ1

0

Я сделал быстрый тест на Excel 2013 (немецкий язык). Я вставил несколько случайных картинок. Они получили автоматические имена, такие как ваше, то есть "График 4"

Чтобы удалить эту форму, я бы использовал эту технику:

Sub test()

    On Error Resume Next
    Set image = ActiveSheet.Shapes("Grafik 4")
    On Error GoTo 0

    Debug.Print image.Name

    If Not image Is Nothing Then
        image.Delete
    End If

End Sub

Excel распознает Shapes("Grafik 4") хотя и является его внутренним именем. Picture 4
который вы можете увидеть с Debug.Print image.Name

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .