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.
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
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
- Compartir respuesta