2010-12-18 30 views

Respuesta

5
Dim shape As Excel.shape 

For Each shape In ActiveSheet.Shapes 
     shape.Delete 
Next 
+1

Lo he probado y funciona –

+0

Tenga en cuenta que esto elimina los gráficos dinámicos (y probablemente cualquier otra cosa que haya seleccionado como una imagen). –

+0

Tiene razón, para evitarlo, suponiendo que está utilizando los nombres de gráfico predeterminados ("Gráfico 1", "Gráfico 2", ...), puede probar dentro del bucle con la función inString, p. InStr (0, shape.name, "Chart"), de modo que si no contiene el "Gráfico" en el nombre omítalo. –

8

La forma más sencilla:

Activesheet.Pictures.Delete 

o

Activesheet.Shapes.Delete 

Dependiendo del tipo de objeto que la imagen es.

Elimina todas las imágenes con mayor eficiencia y luego itera (en bucle) y las borra una a una.

+1

'Activesheet.Shapes.Delete'throws un error (el objeto no es compatible con este método) –

1

Para borrar todas las imágenes u otros formas, se puede repetir todos ellos y comprobar el tipo:

Dim shape As Excel.shape 

For Each shape In ActiveSheet.Shapes 

    Select Case shape.Type 
     Case msoPicture, msoMedia, msoShapeTypeMixed, msoOLEControlObject, msoAutoShape 
      shape.Delete 
     Case Else 
      'Do nothing 
    End Select 
Next 

En mi caso este código era muy útil porque mi hoja estaba lleno de formas transparentes de tipo msoAutoShape cual Pensé que eran imágenes. Por lo tanto, Activesheet.Pictures.Delete no funcionaba.

puede encontrar todos los tipos de forma en este enlace: http://msdn.microsoft.com/en-us/library/aa432678(v=office.12).aspx