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 Sub
Hay algo que no esté haciendo bien? Las opciones que he intentado no son las indicadas?
Agradezco su ayuda por adelantado... Nuevamente