Macro para traer imágenes a una hoja

Tengo una macro para pegar una imagen en una ficha de acuerdo al nombre que hay en una celda. Actualmente me funciona si esta macro la tengo en un modulo y la asigno a un botón, pero quiero que esta imagen me salga automáticamente si yo selecciono un articulo desde una hoja. Agregue el código en la hoja para que se ejecute pero me da un error 1004 y ya no se que hacer. He buscado en varias paginas y nada que doy con la solución del problema. Por favor, me pueden ayudar.

Nota, la pagina no me deja hacer la pregunta cuando pego todo el código.

1 respuesta

Respuesta
1

No comprendo bien lo que deseas hacer pero te paso el link de un archivo que cree hace tiempo quizás te sirva para orientarte u puedas usarlo

Hace como dices tu, escribes el nombre en una celda en este caso es un DNI y si concuerda aparece la imagen de la persona, sino aparece una imagen predeterminada

Avisame si te sirvió..

Descargar Ejemplo

Recuerda cambiar esta línea

R:\OTROS\MIO\Proyectos\Buscar Empleado\Fotos empleados\

Esta es la ruta donde esta la carpeta de fotos "R:\OTROS\MIO\Proyectos\Buscar Empleado\"

Yo lo tengo en la unidad R porque es mi unidad de respaldo de datos =)

Y esta parte "Fotos empleados\" es el nombre de la carpeta donde estarán las fotos

El el archivo que te envío tienes algunas imágenes para probar que la funcionalidad

Solo coloca la carpeta en un lugar, copia la dirección del a misma en esa línea y listo.

Solo tienes que escribir el DNI (el nombre de cada imagne) en la celda marcada y aparecerá

La foto.

Obviamente la celda es editable puedes elegir la que tu quieras y la imagen aparece en una forma "Cuadrado" =)

Si quieres editar el tamaño solo tienes que editar las propiedades de la forma

Saludos, de haberte servido recuerda valorar la respuesta

Hola Sebas, gracias por tu respuesta. Tú archivo es muy similar a lo que quiero hacer. Sin embargo, la diferencia es que tú lo estás haciendo con el evento worksheets_sheet y yo lo necesito por el evento worksheet_selectionChange donde al yo seleccionar un nombre de una lista, este me traiga en una hoja aparte, todos los datos de esa selección y una imagen. Yo hice que me traiga los datos pero cuando agrego el código en la macro para que me traiga la imagen también, me da error

Quise decir que lo hiciste con el evento worksheets_change

Y por qué no en lugar de traer una imagen solo crea una forma en tu hoja como en mi ejemplo y con tu macro haz que te traiga los datos y se cargue la hoja en la forma?

O si creas una hoja nueva al ejecutar la macro, haz que la macro te cree la hoja, cargue los datos, cree una forma, la y en la misma cargas la imagen...

Es una simple sugerencia =) ...

Lo que pasa es que en la hoja donde llevo los datos y quiero cargar la imagen, tengo un botón que abre un expediente si lo requiere el usuario el expediente se abre con uno de los datos. Me interesa saber cómo es eso de la forma, no sé cómo hacerlo. Sabes de un tutorial a ver si lo intento? 

Me estas pidiendo un tutorial como aprender a insertar formas, ¿teniendo a alguien que te puede explicar en frente de tus narizes? xD ja ja

Con esta macro creas un hoja, la renombras y dentro de la misma, crea una forma y la renombra

A partir de aquí puedes seguir con tu macro insertando la imagen dentro de la forma

Sub CrearHojayUnaForma()
'
' Vamos a crear una hoja nueva
Sheets.Add after:=Sheets(Sheets.Count)
'
' Vamos a renombrar la hoja por "Mi-Nueva-Hoja-De-Trabajo"
ActiveSheet.Name = "Mi-Nueva-Hoja-De-Trabajo"
' Ten en cuenta que si ya existe una hoja con este nombre te va a dar error
'
' Creamos una variable para acortar la instruccion
Set NewF = ActiveSheet.Shapes
' Vamos a crear una forma "Rectangulo" en la celda "B4"
' teniendo en cuenta que tus celdas sean de 20px de alto x 80px de ancho.
NewF.AddShape(msoShapeRectangle, 61, 46, 210, 100).Select
'
' Aqui vamos a renombrar la forma por "Mi Forma Favorita"
NewF(NewF.Count).Name = "Mi Forma Favorita"
End Sub

Sabes como hacerlo o te hecho una mano en insertar la imagen en la forma?

Gracias por tu ayuda, supongo que inserto la imagen con el Fill.UserPicture como en el archivo que me enviaste

Voy a tratar de hacer esto que me indicas pero en la hoja de ficha, sin crear una hoja nueva. Voy a probar y te comento

disculpa, esto aquí que significa? 

Es decir, los dos primeros son como las coordenadas de las celdas? 

msoShapeRectangle, 61, 46, 210, 100

Los primeros 2 son la ubicación

Para más exactitud de donde lo quieras colocar puedes escribirlo de esta forma

[G18].Left, [G18]. Top, 300, 200)

Esto lo ubicara sobre la celda G18 y los siguiente 2 parámetros "210, 100" son el ancho y largo del rectángulo, 210 de largo y 100 de alto(que medidas usa excel nunca supe je je creo que es en pixeles o una media similar porque nunca mide exactamente lo que tu escribes...

Lo hice de esta manera, pero cuando hago la selección de otra imagen, no queda al frente, me crea otra forma encima de la otra

On Error GoTo ERRORES
carpeta = "D:\Usuarios\dvelasquez\Desktop\Expediente\" ' AQUI DIRECCION DE LA CARPETA FOTOS
imagen = carpeta & h2.Range("M3") & ".JPG"
' Creamos una variable para acortar la instruccion
Set NewF = h2.Shapes
' Vamos a crear una forma "Rectangulo" en la celda "B4"
' teniendo en cuenta que tus celdas sean de 20px de alto x 80px de ancho.
NewF.AddShape(msoShapeRectangle, [k7].Left, [k7].Top, 308, 209).Select
'
' Aqui vamos a renombrar la forma por "Mi Forma Favorita"
NewF(NewF.Count).Name = "ActFijo"
h2.Shapes("ActFijo").Fill.UserPicture (imagen)
Application.ScreenUpdating = True
MsgBox "Visualizar ficha seleccionada"
Exit Sub
ERRORES:
h2.Shapes("ActFijo").Fill.UserPicture (carpeta & "noimagen.jpg")
End Sub

Te faltaria un IF, sigo obvio que va a crear una cada ves que la ejecutes, es lo que tu le estas diciendo jeje =)

Prueba asi

On Error GoTo ERRORES
carpeta = "D:\Usuarios\dvelasquez\Desktop\Expediente\" ' AQUI DIRECCION DE LA CARPETA FOTOS
imagen = carpeta & h2.Range("M3") & ".JPG"
' Creamos una variable para acortar la instruccion
Set NewF = h2.Shapes
NF = NewF.Count
'
' Corroboramos que la forma con el nombre "ActFijo" ya no exista
For i = 1 To NF
    If NewF(i).Name = "ActFijo" Then GoTo CargarFoto
Next i
'
' Si no existe, procedemos a crear una forma "Rectangulo" en la celda "K7"
NewF.AddShape(msoShapeRectangle, [K7].Left, [K7].Top, 308, 209).Select
'
' Aqui vamos a renombrar la forma por "ActFijo"
NewF(NewF.Count).Name = "ActFijo"
CargarFoto:
h2.Shapes("ActFijo").Fill.UserPicture (imagen)
Application.ScreenUpdating = True
MsgBox "Visualizar ficha seleccionada"
Exit Sub
ERRORES:
H2. Shapes("ActFijo"). Fill.UserPicture (carpeta & "noimagen.jpg")
End Sub

Muchas gracias por todo tu ayuda y paciencia.

que estés muy bien

Me alegro haberte ayudado... recuerda cerrar la pregunta Saludos.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas