Macro para eliminar imagen (con nombre referido a dos celdas)

Después de hacer varias búsquedas en internet encontré esta macro que me funciona perfectamente para insertar una imagen en una celda, el nombre de esta imagen se genera a partir del valor de dos celdas:

Sub Insertarimagen()

tope = Range("C10").Top

Izq = Range("C10").Left

Dim a As String

Dim b As Integer

a = Worksheets("Ficha Calidad").Range("f4").Value

b = Worksheets("Ficha Calidad").Range("c11").Value

ActiveSheet.Pictures.Insert("C:\Users\iamarti\Pictures\Fotos Fichas 2012\" & a & "-" & CStr(b) & ".JPG") _.Select

Selection.ShapeRange.Top = tope

Selection.ShapeRange.Left = Izq

Selection.ShapeRange.Height = 160

Ahora necesito una macro para poder borrar esta imagen generada, he probado con esta orden:

Sub EliminaIMG()
On Error Resume Next
Dim img As Shape
For Each img In ActiveSheet.Shapes
img.Delete
Next
End Sub

Pero me borra todo, botones, logos, autoformas... Sólo quiero borrar la imagen insertada ¿Cómo lo puedo hacer?

1 respuesta

Respuesta
1

Cambia esto
ActiveSheet.Pictures.Insert("C:\Users\iamarti\Pictures\Fotos Fichas 2012\" & a & "-" & CStr(b) & ".JPG") _.Select
Selection.ShapeRange.Top = tope
Selection.ShapeRange.Left = Izq
Selection.ShapeRange.Height = 160

Por:

Declara una variable a nivel Modulo, es decir hasta arriba, afuera del Primer "Sub" que tengas

Dim Img as Shape
y solo cambia lo que t dije por:
Set Img = ActiveSheet.Pictures.Insert("C:\Users\iamarti\Pictures\Fotos Fichas 2012\" & a & "-" & CStr(b) & ".JPG")

With Img
      .Top = tope
      .Left = Izq
      .Height = 160 
End With 

Y para eliminarla solo pon esto.

Sub Eliminar()
img.Delete
End Sub

Muchas gracias he estado probando con lo que me dices pero no me funciona, me podrías indicar como quedaría la fórmula entera, no se exactamente que es crear una variable y creo que no lo estoy haciendo bien.

Se lo agradeceré enormemente.

Un saludo

 
Dim Img As Shape
Sub InsertarImagen()
    Set Img = ActiveSheet.Pictures.Insert("Aqui pon la ruta completa")
With Img
    .Top = tope
    .Left = Izq
    .Height = 160
End With
Sub Eliminar Imagen()
Img.Delete
End Sub

Muchas gracias por todo pero no logro que funcione como quiero, me aparecen errores de sintaxis, y se inserta la imagen pero no en la celda necesaria. Le agradezco mucho la respuesta

Solo modifica un poco el código que t puse y primero asigna el valor de las variables tope e Izq, y la parte donde t puse "Aquí pon la ruta completa..." por lo que pusiste en tu código entre paréntesis.

Al final he cambiado el planteamiento. cuando inserto la imegen le cambio el nombre por "foto" así después a la hora de eliminarlasolo tengo que selecccionarla y ya la puedo suprimir. Muchísimas gracias popr tus respuestas y tu tiempo.

Un saludo

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas