Te anexo las indicaciones para que la macro funcione automáticamente cuando cambias la celda B1
Pon la siguiente macro en los eventos de tu hoja
Private Sub Worksheet_Change(ByVal Target As Range)
'Por.Dante Amor
If Target.Count > 1 Then Exit Sub
ruta = ThisWorkbook.Path & "\"
'
On Error Resume Next
ActiveSheet.DrawingObjects("imagen").Delete
On Error GoTo 0
If Target.Value = "" Then Exit Sub
If Not Intersect(Target, Range("B1")) Is Nothing Then
arch = Target.Value & ".jpg"
If Dir(ruta & arch) = "" Then
MsgBox "La imagen no existe", vbExclamation
Exit Sub
End If
Set fotografia = ActiveSheet.Pictures.Insert(ruta & arch)
Set celda = Range("C1")
'
With fotografia
.Name = "imagen"
.ShapeRange.LockAspectRatio = msoFalse
.Top = celda.Top
.Left = celda.Left
.Width = celda.Width
.Height = celda.Height
End With
Set fotografia = Nothing
End If
End Sub
Las imágenes deberán estar en la misma carpeta donde tienes el archivo con la macro.
Si las imágenes están en otra carpeta, entonces cambia en la macro esta línea:
ruta = ThisWorkbook.Path & "\"
Por el nombre de la carpeta, por ejemplo:
ruta = "C:\archivos\imagenes\"
La imagen se insertará en la celda C1, si quieres que se inserte en otra celda, cambia en la macro "C1" por la celda que desees, en esta línea:
Set celda = Range("C1")
Sigue las Instrucciones para poner la macro en los eventos de worksheet
- Abre tu libro de excel
- Para abrir Vba-macros y poder pegar la macro, Presiona Alt + F11
- Del lado izquierdo dice: VBAProject, abajo dale doble click a worksheet(tu hoja)
- En el panel del lado derecho copia la macro
'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias