macro para mostrar diferentes fotos en la misma hoja

01/01/2004 - 23:10 por alejandro | Informe spam
Hola...
Bueno, la idea es la siguiente.
Tengo una hoja en la que he puesto una lista de alumnos y
un muchas columnas para anotar la asistencia y más cosas.

Yo quiero que cada vez que seleccione el nombre o
cualquier celda de la misma fila, me aparezca en un sitio
concreto de la hoja, una foto del alumno en cuestión.
Obviamente cada vez que seleccione cualquier otro alumno,
me lo muestre en el mismo sitio.

No sé si es posible pero por preguntar, nada se pierde.

Feliz año a todos!!

alejandro

Preguntas similare

Leer las respuestas

#1 Zapata
02/01/2004 - 10:43 | Informe spam
Hola Alejandro:
lo que pides lo tienes que hacer con VBA.esta macro que pongo a continuacion
la tienes que colocar en el evento Worksheet_Change de la hoja afectada. si
tienes dudas me lo haces saber.
Un saludo..
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'SUPUESTOS
'No tienes mas imagenes en la hoja
'El nombre del alumno es el nombre de su foto
'la columna que contiene el nombre del alumno es la primera
'El formato de las fotos es jpg
Application.EnableEvents = False
NombreAlumno = Target.End(xlToLeft).Value
Range("A1").Select
ActiveSheet.Pictures.Delete
ActiveSheet.Pictures.Insert ("C:\Mis documentos\Mis imágenes\" &
NombreAlumno & ".jpg")
Application.EnableEvents = True

End Sub
Respuesta Responder a este mensaje
#2 Héctor Miguel
03/01/2004 - 05:17 | Informe spam
hola, alejandro !

... hoja ... lista de alumnos y ... columnas para anotar la asistencia y [...]
... quiero que cada vez que seleccione el nombre o cualquier celda de la misma fila
... aparezca en un sitio concreto de la hoja, una foto del alumno en cuestion [...]



==> otra 'alternativa' con los siguientes 'supuestos':
- cada fila 'corresponde' a un alumno
- la foto se muestra SIEMPRE 'ajustada' dentro del rango 'A1:C22'
- la foto de CADA alumno esta 'indicada' en la columna 'D' [de 'su' fila]
=> ES la 'ubicacion' => directorio[s] + nombre + EXTension [p.e.]
-o- C:\Mis documentos\Mis imagenes\Alumnos\Juan Carlos.bmp
-o- C:\Otro directorio\Fotos colegio1\dsc0001.jpg
-o- [...] => 'por si' tuvieras varios directorios y 'diferentes' nombres y formatos <
en el modulo de codigo de 'la hoja' ==Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim Foto As Object, Arriba As Double, Izquierda As Double, _
Ancho As Double, Alto As Double
Application.ScreenUpdating = False
On Error Resume Next
Me.Shapes("Foto").Delete
If Dir(Range("d" & Target.Row)) = "" Then Exit Sub
Set Foto = Me.Pictures.Insert(Range("d" & Target.Row))
With Range("a1:c22")
Arriba = .Top
Izquierda = .Left
Ancho = .Offset(0, .Columns.Count).Left - .Left
Alto = .Offset(.Rows.Count, 0).Top - .Top
End With
With Foto
.Name = "Foto"
.Top = Arriba
.Left = Izquierda
.Width = Ancho
.Height = Alto
End With
Set Foto = Nothing
End Sub

saludos,
hector.
Respuesta Responder a este mensaje
#3 alejandro
03/01/2004 - 15:34 | Informe spam
Estimado Hector

No entiendo una cosa.
El código que me has pasado funciona perfectamente en un
libro nuevo, lo he probado incluso cambiando el rango de
celdas en el que quiero que aparezca la foto.
Pero cuando lo pongo en la hoja del curso en cuestión, no
me funciona. Lo he revisado una y otra vez y no encuentro
el error.

¿Por qué pasa eso?

Gracias de todas formas, eres un fenómeno.
alejandro

hola, alejandro !

... hoja ... lista de alumnos y ... columnas para




anotar la asistencia y [...]
... quiero que cada vez que seleccione el nombre o




cualquier celda de la misma fila
... aparezca en un sitio concreto de la hoja, una foto




del alumno en cuestion [...]

==> otra 'alternativa' con los siguientes 'supuestos':
- cada fila 'corresponde' a un alumno
- la foto se muestra SIEMPRE 'ajustada' dentro del


rango 'A1:C22'
- la foto de CADA alumno esta 'indicada' en la


columna 'D' [de 'su' fila]
=> ES la 'ubicacion' => directorio[s] + nombre +


EXTension [p.e.]
-o- C:\Mis documentos\Mis imagenes\Alumnos\Juan


Carlos.bmp
-o- C:\Otro directorio\Fotos colegio1\dsc0001.jpg
-o- [...] => 'por si' tuvieras varios directorios


y 'diferentes' nombres y formatos <>
en el modulo de codigo de 'la hoja' ==>Private Sub Worksheet_SelectionChange(ByVal Target As


Range)
Dim Foto As Object, Arriba As Double, Izquierda As


Double, _
Ancho As Double, Alto As Double
Application.ScreenUpdating = False
On Error Resume Next
Me.Shapes("Foto").Delete
If Dir(Range("d" & Target.Row)) = "" Then Exit Sub
Set Foto = Me.Pictures.Insert(Range("d" & Target.Row))
With Range("a1:c22")
Arriba = .Top
Izquierda = .Left
Ancho = .Offset(0, .Columns.Count).Left - .Left
Alto = .Offset(.Rows.Count, 0).Top - .Top
End With
With Foto
.Name = "Foto"
.Top = Arriba
.Left = Izquierda
.Width = Ancho
.Height = Alto
End With
Set Foto = Nothing
End Sub

saludos,
hector.


.

Respuesta Responder a este mensaje
#4 alejandro
03/01/2004 - 15:53 | Informe spam
Hector, no me hagas caso.
Ya encontré el error.

Lo había puesto en ThisWorkbook, en lugar de la hoja
correspondiente.

Joder!!... me volvió loco unos cuantos minutos, pero
bueno, ya está y funciona!!!!

Gracias amigo!!!
Feliz año
alejandro
Respuesta Responder a este mensaje
#5 Héctor Miguel
03/01/2004 - 20:08 | Informe spam
hola, alejandro !

me alegra que te haya servido :))

Gracias amigo!!!


==> gracias a ti [por el 'feed-back']

Feliz año


==> Feliz año ;)

hector.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida