Apagar gráfico no Excel com o VBA

2

Em algumas das minhas planilhas eu vejo imagens e Excel me mostram os nomes como "Grafik 4". Agora eu quero deletá-los automaticamente. Eu tenho 200 arquivos do Excel, sempre com a mesma imagem e o mesmo nome da imagem. Eu tentei assim:

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

Mas no VBA, cada imagem parece ter o nome "Objeto x" (x são números de 1-aberto). Alguém tem uma ideia de como eu posso ler o nome real da foto?

Melhor     Franz

    
por Franz L. 26.06.2016 / 14:49

1 resposta

0

Eu fiz um teste rápido no Excel 2013 (idioma alemão). Eu inseri algumas fotos aleatórias. Eles têm nomes automáticos como o seu, ou seja, "Grafik 4"

Paraexcluiressaforma,euusariaessatécnica:

Subtest()OnErrorResumeNextSetimage=ActiveSheet.Shapes("Grafik 4")
    On Error GoTo 0

    Debug.Print image.Name

    If Not image Is Nothing Then
        image.Delete
    End If

End Sub

O Excel reconhece Shapes("Grafik 4") apesar de ser o nome interno Picture 4
que você pode ver com Debug.Print image.Name

    
por 26.06.2016 / 15:14