Borrar imagen en hoja de Excel
Antes que nada quiero agradecer su ayuda anteriormente, he estado aprendiendo mucho de ustedes y mi pequeño proyecto personal va tomando mas forma cada vez aunque aun falta mucho para decir que está terminado, porque como buen programador siempre hay que buscar formas de mejorar lo que se tiene.
Bueno entrando de lleno al caso de hoy:
Mi macro abre un formulario en el que se solicita cierta información, luego con esa información llena unos campos en una hoja de excel para presentar una especie de informe que puede enviarse a imprimir si se desea. Dentro de ese informe se inserta una imagen (.PNG) relacionada a una muestra de como acomodar diferentes tipos de muebles dentro de una habitación. Tengo una imagen por cada diagrama de muestra. Las imágenes están almacenadas en una carpeta llamada img dentro de la ruta en la que mi Libro esta guardado.
'Declaramos variables
Dim RutaActual As String
Dim RangoImagen As Range
'La variable RutaActual guardará la ruta completa donde está el archivo
RutaActual = ThisWorkbook.Path
'Elegimos la celda L6
ActiveSheet.Range("L6").Select
Set RangoImagen = ActiveCell
'Insertamos la imagen que corresponda al nombre de la celda indicada
ActiveCell.Offset(1, 0).Select
ActiveSheet.Pictures.Insert(RutaActual & "\img\" & RangoImagen.Value & ".PNG").Select
Selection.Width = Selection.Width * 70 / 100 'Ajustar tamaño al 70%
Selection.Height = Selection.Height * 80 / 100 'Ajustar tamaño al 80%A un costado de ese reporte puse dos botones, el primero llama al UserForm donde capturo los datos y se inserta la imagen en el reporte. El segundo limpia el reporte y debería borrar la imagen insertada, pero no logro hacerlo, he buscado varios métodos pero no consiguen hacer lo que necesito, incluso encontré un código que elimina todo los objetos tipo Shape que hay en la hoja pero eso también borra los botones de comando y otras imágenes que no quiero que se borren (Logos, firmas, etc).
También encontré esta rutina para borrar imágenes dentro de un rango de celdas definido, pero aunque no me arroja errores y he comprobado que se ejecuta paso por paso, no borra la imagen:
Private Sub CommandButton2_Click()
'Añadimos líneas para eliminar imágenes en el rango A3:D25
'Declaramos variables.
Dim PrimeraFila As Integer, PrimeraColumna As Integer
Dim UltimaFila As Integer, UltimaColumna As Integer
Dim img As Object
Dim tc As Long, tr As Long
PrimeraFila = Range("k6").Row
PrimeraColumna = Range("k6").Column
UltimaFila = Range("o18").Row
UltimaColumna = Range("o18").Column
'Recorre cada objeto de la hoja y valida su posición.
For Each img In ActiveSheet.Shapes
On Error Resume Next 'controlamos fallo al NO encontrar imágenes
tc = img.BottomRightCell.Column
tr = img.BottomRightCell.Row
If (tc >= PrimeraColumna And tc <= UltimaColumna) And _
(tr >= PrimeraFila And tr <= UltimaFila) Then
If img.Type = 11 Then
'mensaje que muestra la posición de inicio de la imagen
MsgBox img.Name & "-" & img.Type & "-" & img.TopLeftCell.Address
img.Delete
End If
End If
On Error GoTo 0
Next
'Range("F7") = ""
'Range("F8") = ""
End SubHay algo que no esté haciendo bien? Las opciones que he intentado no son las indicadas?
Agradezco su ayuda por adelantado... Nuevamente