¿Cómo puedo hacer para llamar una imagen de forma automática usando una macro en una celda?
Tengo el siguiente código de macro que me llama la imagen, pero mi problema esta es que tengo que hacer enter para que me llame la imagen, yo lo que quiero es que a medida que cambio el valor en la celda a1, también me cambie la foto y luego imprimir la ficha del personal, yo le nombre a mis fotos con mi numero de legajo, estoy haciendo un legajo de empleados de una empresa, no se si sirve también como referencia, los datos completo usando la función buscarv().
Sub MostrarFoto()
'dimensiono las variables que manejarán las fotos y la ruta de acceso a 'las mismas:
Dim Foto As Object
Dim Ruta As String
'si el usuario no escribió nada en A1, salgo del sub
If Cells(1, 1).Value = "" Then
Exit Sub
End If
'defino la ruta de acceso a las fotos:
Ruta = "C:\pictures\"
'apago el parpadeo de pantalla:
Application.ScreenUpdating = False
'por las dudas, controlo cualquier posible error:
On Error Resume Next
'si existe alguna foto, la borro:
Me.Shapes("Mi_Foto").Delete
'bueno, atención: ahora concateno la Ruta con el código que el usuario 'ingresó en A1 y a 'lo último le agrego la extensión del archivo (en este 'caso, una imagen JPG)
Ruta = Ruta & Cells(1, 1).Value & ".jpg"
'corroboro que la imagen exista. Si NO existe, me voy del Sub
If Dir(Ruta) = "" Then Exit Sub
'y aquí lo esperado: inserto la foto en excel, pasando como argumento la 'Ruta de acceso que definí en el paso anterior:
Set Foto = Me.Pictures.Insert(Ruta)
'y ahora trabajo sobre el objeto insertado, modificando un par de 'propiedades:
'nombre / posición Y dentro de la hoja / posición X dentro de la hoja / 'ancho y alto:
With Foto
.Name = "Mi_Foto"
.Top = 0
.Left = 300
.Width = 150
.Height = 150
End With
'activamos nuevamente el refresco de pantalla
Application.ScreenUpdating = True
'siempre destruimos a los objetos, para liberar los recursos del sistema:
Set Foto = Nothing
End Sub