Durante mi periodo de vacaciones, curiosamente, recibí dos correos que planteaban una misma situación. Se trataba de establecer la manera de asociar una imagen al valor de una celda:
En esta primera explicación obviaremos macros y códigos VBA, centrándonos en las herramientas estándar de las que disponemos en Excel 2007.
Supondremos que tenemos una primera hoja 'BaseDatos' con un banco de imágenes:
Vemos que nuestra base de datos o banco de imágenes es muy sencillo.
Nuestro trabajo comienza por asignar nombres a ciertos rangos (ver como); anticipando que nuestro criterio de búsqueda será el primer campo de nuestro origen de datos 'Código', lógicamente uno de los nombres creados será:
Código =BaseDatos!$A$2:$A$5
Para generar el segundo nombre emplearemos la función DESREF con su funcionalidad de búsqueda (y no de creación de rango), anidándo dentro de ella la funcíon COINCIDIR.
El segundo nombre será:
foto =DESREF(BaseDatos!$D$2;COINCIDIR(Ficha!$A$2;Código;0)-1;0)
función que mostrará de la columna D (o campo 'Foto') la imagen que coincida con el valor buscado en la celda A2.
Estos nombres los usaremos en la segunda de nuestras hojas ('Ficha'), donde asociaremos al valor de una celda la foto o imagen que le corresponda:
En la celda A2 hemos generado una Validación de datos tipo lista, empleando el rango 'Código':
La clave de todo este asunto viene ahora, ya que para asociar al valor desplegado en la celda A2 la imagen que le corresponda del origen de datos (o banco de imágenes) deberemos insertar un objeto.
Desde Ficha Insertar > Grupo opciones Texto > Objeto
seleccionaremos Imagen de mapa de bits:
Observemos cómo aparece el objeto añadido
aunque lo más importante será trabajar en la barra de fórmulas con el objeto seleccionado...
Después de darle un tamaño adecuado al objeto (lo he ajustado al tamaño de la celda C2):
Con el objeto seleccionado, reemplazaremos en la barra de fórmulas donde pone =INCRUSTAR("Paint.Picture";"") por =foto, inmediatamente veremos cómo dentro de dicho objeto aparece la imagen correspondiente al valor de la celda A2 buscado.
También es posible, repitiendo todos los pasos exactamente igual, insertar un objeto desde la Ficha Programador > Controles > Insertar > Controles ActiveX > Imagen:
y seguir el proceso de manera identica a lo explicado anteriormente.
| ...el concepto es esto: es un carnet, en la cual al cambiar un codigo cambia la foto y todo sus datos.
Lo que quiero saber cómo se hace para que cambie la imagen... |
En esta primera explicación obviaremos macros y códigos VBA, centrándonos en las herramientas estándar de las que disponemos en Excel 2007.
Supondremos que tenemos una primera hoja 'BaseDatos' con un banco de imágenes:
Vemos que nuestra base de datos o banco de imágenes es muy sencillo.
Nuestro trabajo comienza por asignar nombres a ciertos rangos (ver como); anticipando que nuestro criterio de búsqueda será el primer campo de nuestro origen de datos 'Código', lógicamente uno de los nombres creados será:
Código =BaseDatos!$A$2:$A$5
Para generar el segundo nombre emplearemos la función DESREF con su funcionalidad de búsqueda (y no de creación de rango), anidándo dentro de ella la funcíon COINCIDIR.
El segundo nombre será:
foto =DESREF(BaseDatos!$D$2;COINCIDIR(Ficha!$A$2;Código;0)-1;0)
función que mostrará de la columna D (o campo 'Foto') la imagen que coincida con el valor buscado en la celda A2.
Estos nombres los usaremos en la segunda de nuestras hojas ('Ficha'), donde asociaremos al valor de una celda la foto o imagen que le corresponda:
En la celda A2 hemos generado una Validación de datos tipo lista, empleando el rango 'Código':
La clave de todo este asunto viene ahora, ya que para asociar al valor desplegado en la celda A2 la imagen que le corresponda del origen de datos (o banco de imágenes) deberemos insertar un objeto.
Desde Ficha Insertar > Grupo opciones Texto > Objeto
seleccionaremos Imagen de mapa de bits:
Observemos cómo aparece el objeto añadido
aunque lo más importante será trabajar en la barra de fórmulas con el objeto seleccionado...
Después de darle un tamaño adecuado al objeto (lo he ajustado al tamaño de la celda C2):
Con el objeto seleccionado, reemplazaremos en la barra de fórmulas donde pone =INCRUSTAR("Paint.Picture";"") por =foto, inmediatamente veremos cómo dentro de dicho objeto aparece la imagen correspondiente al valor de la celda A2 buscado.
También es posible, repitiendo todos los pasos exactamente igual, insertar un objeto desde la Ficha Programador > Controles > Insertar > Controles ActiveX > Imagen:
y seguir el proceso de manera identica a lo explicado anteriormente.















Hola gracias por publicar esta info, tengo problemas en la parte donde hay que validar los datos en el origen hay que poner =codigo
ResponderEliminarpero no me lo esta tomando, si bien cree el rango en la hoja "base de datos" como codigo, no me lo esta tomando.
aceptando esto me trae el nombre de la imagen que corresponde al codigo pero no veo la imagen en si espero que me puedas ayudar.
saludos,
el error que me tira al intentar validar la lista con el origen =codigo es el siguiente
ResponderEliminar"La fuente de la lista debe ser una lista delimitada o bien una referencia a una fila o columna individual"
desde ya gracias y espero que me puedan ayudar
Hola,
ResponderEliminarasegúrate de crear el nombre Código:
Código =BaseDatos!$A$2:$A$5
previamente, se trata de Asignar un nombre a un rango de celdas. Una vez generado el nombre lo utilizaremos para generar una lista desplegable en una celda empleando la Validación de datos.
Debes verificar que has escrito igual el rango...
Los pasos de este ejemplo son muy sencillos y no tienen ningún truco, por lo que no deberían fallar...
Slds
Wow! very nice information. i was searching article like this.
ResponderEliminarThanks
http://mlmdevelopers.com/products/mlm-software/mlm-software-beta/features.html
Hago todo y maravilla aparece a foto, pero cuando le cambio el número en la primera columna, tengo que volver a escribir =Foto para que cambie, además sólo me funciona en la fila 2. No se que hacer, llevo un día tratando de hacer esto y para los macros si no tengo idea. ¿Alguna ayuda?
ResponderEliminarHola Emerson,
ResponderEliminares normal que funciene sólo a partir de la fila 2, ya que hemos definido 'foto' como:
=DESREF(BaseDatos!$D$2;COINCIDIR(Ficha!$A$2;Código;0)-1;0)
es decir, coge las imágenes a partir de la segunda fila.
Realmente todo el trabajo parte de una correcta definición y asignación de nombres definidos; yo he replicado tu caso, y no me devuelve ningún error, esto es, funciona correctamente y no tengo ni que cambiar fórmulas ni reescribir =Foto.
Asegúrate que tienes bien definidos los nombres, y la celda validación.. si ya reemplazaste
=INCRUSTAR("Paint.Picture";"") por =foto
olvídate de nada más.
Slds
YAAAAAAAA es que estaba tratando de poner otro desplegable en A2 e incrustar al frente otra de las fotos, sólo cree otro rango foto2 pero dependiendo ya de Ficha!A3 y cuando inserto el objeto al frente de la celda de Ficha!A3 ya le doy es Foto2 y así lo haré sucesivamente porque tengo que poner es algo así como 20 fotos. Gracias
ResponderEliminarTodo el día de ayer hasta que alguien dió una solución sencilla sin tener que usar alta ingeniería de programación. Eso es lo bello de la inteligencia "La sencillez"
Estimado, me ha sido de gran ayuda la información, el único problema es que no he podido ingresar
ResponderEliminar=foto
ya que me dice
"La referencia no es válida"
He puesto com Ámbito BaseDatos, Ficha y libro. Aun así, nada de nada.
TE agradezco de antemano la ayuda.
Saludos!
PD: Uso Office 2010, será ese el problema??
Hola Danilo,
Eliminarummm.. pues parece que algo falla en 2010, por que a mi me pasa lo mismo. Investigaré sobre el tema.
Un saludo
y para el 2010 como hago
ResponderEliminarHola...
EliminarRevisa esta entrada donde se explica los pasos para construir una macro que inserta imágenes en una celda:
http://excelforo.blogspot.com.es/2012/05/vba-una-macro-en-excel-para-insertar.html
Slds
DISCULPA LLEVO 2 DIAS Y NO ME SALE NADA DE FOTO, USO OFFICE 2007,HE CREADO 2 HOJAS UNA BASE DATOS Y OTRA FICHA, REEMPLACÉ FOTO POR INCRUSTAR SÓLO QUEDA EL MARCO EN BLANCO DE LA FOTO, TE AGRADECERE TU AYUDA.
ResponderEliminarPEDRO
Hola Pedro,
Eliminartienes que asegurarte de seguir los pasos explicados. Es fundamental definir priviamente los nombres y asignarlos a los rangos correctos.
Comprueba que has dado el nombre 'foto' como se indica en el post.
Slds
P.D.: Por favor, evita escribir en mayúsculas... significa que estás gritando ;-)
Hola, he utilizado esta herramienta para mis archivos de Excel sobre ligas de fútbol en mi blog www.economiaemergente.com
ResponderEliminarEl Problema es que cuando actualicé a Excel 2010, ya no me funciona. Al cambiar en la barra de fórmulas el nombre del rango me aparece referencia no valida. Me puedes ayudar a encontrar la solución? quedo muy atento. Gracias!!!! Excelente Blog ...
Hola Mario,
Eliminarprueba con lo que explico en esta otra entrada
http://excelforo.blogspot.com.es/2012/11/pegar-imagen-vinculada-en-excel-2010.html
Slds y muchas gracias!!
tengo un problema al imprimir la imagen no se imprime correctamente podrias ayudarme gracias
ResponderEliminarHola Hugo,
Eliminarnecesitaría saber a qué te refieres con 'correctamente', ¿quizá queda fuera del área de impresión?...prueba ajustando el escalado o los saltos de página, para que toda la imagen quede en la página impresa.
Slds cordiales
Muchas gracias por compartir este truco.
ResponderEliminarMe resolvió un problema que creía imposible de resolver y me agilizó mucho el trabajo.
Me alegro te haya sido útil...
Eliminarese es el espíritu de mi blog.
Cordiales saludos
por dios, por fin. :)
ResponderEliminarllevo un monton de tiempo buscando una buena explicacion.
gracias, realmente no sabes como me has ayudado con este esplicacion.
;-)
EliminarSeguro te interesará entonces este otro post
http://excelforo.blogspot.com.es/2012/11/pegar-imagen-vinculada-en-excel-2010.html
Un saludo y gracias
Hola Ismael,
ResponderEliminarGracias por el post. Está genial.
¿Sabes qué fórmula o proceso aplicar para que los resultados sean visibles en varias filas a la vez?. Estoy creando una tarifa con 1500 referencias a las que tengo que asignar 100 dibujos (muchas referencias utilizan un mismo dibujo). Muchas gracias.
Hola, y perdona no haberte contestado antes...
Eliminartu comentario se me escapó, lo siento.
Respecto de tu cuestión, no sé si lo entiendo bien.
Entiendo que quieres visualizar para cada una de esas 1500 referencias uno de esos 100 dibujos (repetidos), pero no quieres realizar la incrustación de manera manual... si es así, podrías leer esta entrada donde se explica una macro:
http://excelforo.blogspot.com.es/2012/05/vba-una-macro-en-excel-para-insertar.html
Espero te sirva.
Slds
Muchas gracias por esta explicación. Una vez comprendidos los pasos, realmente es muy sencillo conseguirlo.
ResponderEliminarSólo una duda.
Al escribir la fórmula del rango "foto", al prinicipio pensé que faltaba un ´;´ después del paréntesis de cierre de COINCIDIR (Donde he puesto el asterisco), <<<..COINCIDIR(Ficha!$A$2;Código;0)*-1;0)>>>>, pero si lo ponía, la foto no se refrescaba con el cambio de referencia a "Código". Una vez que quito el ';', todo va de maravilla.
¿Se debe a un error? porque ambas sintaxis las tolera como correctas.
Un saludo y gracias por el post
Hola, muchas gracias a tí...
Eliminarno es un tema de COINCIDIR, si no de la función DESREF, ésta admite hasta 5 argumento:
=DESREF(ancal;fila;columna;alto;ancho)
la función COINCIDIR se emplea, al anidarla, como argumento 'fila'.
En el caso que planteas, si reemplazas el asterisco por un ';' estás llevando el -1 como argumento 'columna' y el '0' como argumento 'alto'.
Es decir, la función no te dará error, ya que estás completando argumentos válidos, pero el sistema fallará por que estarías refiriéndote a cualquier otra cosa.
Espero haberme explicado con claridad ;-)
Sdls cordiales
Creo que he comprendido mi error: El argumento fila de tu expresión es el resultado de COINCIDIR menos 1, y el '0' estaría haciendo referencia al argumento 'columna'.
ResponderEliminarClaridad meridiana.
Un saludo y Gracias de nuevo por tu respuesta
EM
Correcto.
EliminarCordiales saludos.
Hola,
ResponderEliminarEn el caso de querer insertar una imagen en un formulario, ¿como voy añadiendo imágenes a la siguiente fila? Me explico:
voy introduciendo datos, y cada dato tiene una imagen asociada.
Dato Imagen
A imagen1
B imagen2
C imagen3
A imagen1
La tabla se va llenando cada vez que se calcula (pulsando F9).
¿cómo lo puedo hacer?
lo he intentado con =DESREF(BaseDatos!$D$2;COINCIDIR(Ficha!$A$2;Código;0)-1;0), pero Ficha!$A$2 va cambiando de posición, es una variable por lo que no sirve...
gracias de antemano
Hola,
Eliminaraunque no acabo de entender cuál es el proceso que quieres hacer, creoq ue te pude ser útil leer esta entrada
http://excelforo.blogspot.com.es/2012/05/vba-una-macro-en-excel-para-insertar.html
Estoy suponiendo que cuando hablas de 'formulario' (por el contexto) te refieres a una plantilla en una hoja de cálculo, y no un UserForm de VBA...
Espero te pueda orientar...
Slds cordiales
no entendí na-dita, me podrían poner un documento como ejemplo???
ResponderEliminarHola,que tal?
EliminarEspero estés bien.
Sólo sigue los pasos tal cual se indican.
También puedes ver otro ejemplo en
http://excelforo.blogspot.com.es/2012/11/pegar-imagen-vinculada-en-excel-2010.html
Un cordial saludo
gracias pero no creo k m funcione a lo k necesito hacer debo de hacer ke la imagen me aparesca junto con el numero de control de una persona... y lo intente con el jemplo ke dan al inicio de la pagina pero no me funciona no sale y esquee tengo el 2010..
Eliminarestoy acabada :(
Hola,
Eliminarquizá te sirva entonces esta macro:
http://excelforo.blogspot.com.es/2012/05/vba-una-macro-en-excel-para-insertar.html
Slds
hola! he seguido alpie de la letra tus instrucciones pero no logro desplegar la imagen solo me aparace un cuadro en blanco. cres que sea la version? uso excel 2007 en ingles.
ResponderEliminarHola Gabino,
Eliminarla explicación está dada sobre la versíon Excel 2007, no creo que tu versión en inglés tenga nada que ver... yo repasaría bien los pasos, especialmente el tema de Nombres definidos y la situación de las diferentes celdas o rangos respecto a estos.
Comentas cuando lo hayas verificado.
Slds cordiales
Una consulta al foro: Al tratar de insertar un cuadro de texto en excel pasa lo siguiente: me enmarca el cuadro pero no puedo escribir dentro del mismo, me sale una advertencia que dice "La Referencia no es Válida" si alguien puede ayudarme le agradeceré, a modo de info tengo en Windows 8
ResponderEliminarHola,
Eliminarno creo tenga nada que ver con la versión de Windows que tengas...
asegúrate tienes correctamente instalado Office, y en particular Excel.
De todas formas ese error de 'Referencia no válida' normalmente se dá cuando trabajamos con Tablas dinámicas o con fórmulas que operan sobre rangos o celdas (referencias de Excel) o quizá con nombres definidos; por lo que es muy extraño que al intentar insertar un sencillo objeto (un Cuadro de texto, sin más..) aparezca un error de Referencia, cuando el onjeto no está aún asociado a nada.
Lo siento, pero no puedo darte una solución...
:-(