Hola Dam.
Te envío el codigo. Seguro que hay muchos errores pero soy novato...
'========================= BUSCA ARCHIVO DE FOTO AL MOVERSE POR UNA FILA DETERMINADA ========================
'Busca el archivo de foto al moverse por las celdas de una columna determinada
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim FilaAct As Integer
Set fotografia = Nothing
'ActiveSheet.Unprotect 'desprotege la hoja activa
'Si hay errores, que continúe
On Error Resume Next
'Ocultamos el procedimiento
Application.ScreenUpdating = False
'Pasamos a una variable, el nombre de la foto, que será el mismo que el nº de exped. del alumno, 'El nº de expediente lo toma de la columna Q y la fila actual.
FilaAct = ActiveCell.Row
foto = Range("Q" & FilaAct).Value
foto = Replace(foto, " ", "-")
foto = foto & ".png"
Ruta = ActiveWorkbook.Path & "\fotos alumnos" & "\" & foto
Me.Shapes("foto_del_alumno").Delete
Set fotografia = Me.Pictures.Insert(Ruta)
'asignamos el rango de celdas que ocupará la foto
With Range("U1:V5")
Arriba = .Top
Izquierda = .Left
Ancho = .Offset(0, .Columns.Count).Left - .Left
Alto = .Offset(.Rows.Count, 0).Top - .Top
End With
'le ponemos un nombre al objeto "fotografia" para poder borrarla cuando cambie la celda A1 '(ver que borramos la foto que hubiese, antes de insertar la nueva)
With fotografia .Name = "foto_del_alumno"
.Top = Arriba
.Left = Izquierda
.Width = Ancho
.Height = Alto
End With
'eliminamos el objeto
Set fotografia = Nothing
Set foto = Nothing
'ponemos todo como estaba
Application.ScreenUpdating = True
'ActiveSheet.Protect 'protege otra vez la hoja
End Sub
Muchas gracias