En Excel: Cómo insertar una imagen (desde un directorio externo) en una celda basado en el contenido de otra celda contigua?

¿Cómo se modificaría la siguiente Macro para que la selección sea dinámica? Es decir, que no solo lea la celda F2 sino también la F3, F4... Etc. Tal como está programada ahora solo me funciona para una sola celda, pero necesito poder colocar una imagen al lado de cada celda de una columna basado en el contenido de esa celda, digamos F2, F3, F4... Gracias

Macro:

Sub insertafoto()
'tomar el nombre de una celda y poner una foto
'Por.Dam
    'Nombre del directorio
    carpeta = "c:\personal\"
    'el nombre de la foto deberá estar en alguna celda
    imagen = Range("F2")
    'Celda donde se va a poner la foto
    Range("G2").Select
    ActiveSheet.Pictures.Insert(carpeta & imagen).Select
    With Selection
        .Placement = xlMoveAndSize
        .PrintObject = True
    End With
    Selection.ShapeRange.LockAspectRatio = msoFalse
    'modificar las siguientes medidas para ajustar el tamaño de la foto
    Selection.ShapeRange.Height = 65#
    Selection.ShapeRange.Width = 65#
    Selection.ShapeRange.Rotation = 0#
End Sub

1 Respuesta

Respuesta
1

 H o l a :

Te anexo la macro actualizada. En las celdas deberás poner el nombre completo de la imagen incluyendo la extensión, ejemplos:

Foto1.gif

imagen.jpeg

Sub InsertaFoto()
'Por.Dante Amor
    ActiveSheet.DrawingObjects.Delete
    ruta = "C:\personal\"
    For i = 2 To Range("F" & Rows.Count).End(xlUp).Row
        imagen = Cells(i, "F")
        If Dir(ruta & imagen) <> "" Then
            With Cells(i, "G")
                arr = .Top
                izq = .Left
                anc = .Width
                alt = .Height
            End With
            ActiveSheet.Pictures.Insert(ruta & imagen).Select
            With Selection
                .Placement = xlMoveAndSize
                .PrintObject = True
                .ShapeRange.LockAspectRatio = msoFalse
                .ShapeRange.Top = arr
                .ShapeRange.Left = izq
                .ShapeRange.Height = alt
                .ShapeRange.Width = anc
            End With
        End If
    Next
End Sub


'

S a l u d o s . D a n t e   A m o r. Recuerda valorar la respuesta.

Muchísimas Gracias Dante, tu respuesta, además de ser inmediata, fue absolutamente precisa! Funciona perfecto! He estado insertando manualmente las fotos por años, y en cuestión de segundos me has ayudado con una excelente herramienta.

Muchas gracias por compartir tu conocimiento.

Un abrazo!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas