lunes, 29 de agosto de 2011

Cómo asociar una imagen al valor de una celda en Excel 2007.

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:

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

128 comentarios:

  1. Hola gracias por publicar esta info, tengo problemas en la parte donde hay que validar los datos en el origen hay que poner =codigo
    pero 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,

    ResponderEliminar
  2. el error que me tira al intentar validar la lista con el origen =codigo es el siguiente
    "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

    ResponderEliminar
  3. Hola,
    asegú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

    ResponderEliminar
    Respuestas
    1. Hola, tengo el mismo problema con la parte de crear la lista desplegable, ya que me dice que no puede encontrar el rango especificado, y los tengo a ambos nombres creados, con su rango correspondiente cada uno, y de igual manera que aqui, y aun asi me tira ese error.
      Que hago?
      Creo que solo me falta eso para me funcione

      Tengo office 2007

      Eliminar
    2. Hola, si has verificado que los Nombres definidos (todos) ya los tienes creados como se indica en el post, sólo por descartar, comprueba el ámbito de éstos (que sean Libro y no una Hoja concreta).

      Como decía en un comentario anterior los pasos son tal cual explico.

      De todas formas si lo único que te falla es la Validación de datos (celda con la lista desplegable, igual puedes verificar que la imágen cambia, introduciendo los datos manualmente...

      Verifica lo comentado, y si te sigue fallando puedes enviarme el fichero para que revise lo que te falta a
      excelforo@gmail.com

      Slds cordiales

      Eliminar
  4. 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?

    ResponderEliminar
  5. Hola Emerson,
    es 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

    ResponderEliminar
  6. 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
    Todo 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"

    ResponderEliminar
  7. Estimado, me ha sido de gran ayuda la información, el único problema es que no he podido ingresar
    =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??

    ResponderEliminar
    Respuestas
    1. Hola Danilo,
      ummm.. pues parece que algo falla en 2010, por que a mi me pasa lo mismo. Investigaré sobre el tema.
      Un saludo

      Eliminar
  8. y para el 2010 como hago

    ResponderEliminar
    Respuestas
    1. Hola...
      Revisa 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

      Eliminar
  9. 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.
    PEDRO

    ResponderEliminar
    Respuestas
    1. Hola Pedro,
      tienes 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 ;-)

      Eliminar
  10. Hola, he utilizado esta herramienta para mis archivos de Excel sobre ligas de fútbol en mi blog www.economiaemergente.com
    El 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 ...

    ResponderEliminar
    Respuestas
    1. Tal y como dijeron a Jesucristo: "maestro, te seguimos por lo bien que te explicas..."
      Para excel 2010, en lugar de realizar incrustado de mapa de bits, se debe copiar las celdas donde se encuentra la foto y realizar un pegado especial de imagen vinculada (otras opciones de pegado). Tras ello, seleccionamos el nuevo objeto/imagen pegado y procedemos a sustituir la referncia de la barra de fórmulas por =foto
      Así si funciona en excel 2010.

      Un saludo

      Eliminar
    2. Gracias por el aporte Gabriel!!
      un cordial saludo

      Eliminar
    3. primero gracias por excelforo Ismael y tambien a Gabriel por su aporte.
      Gabriel te agradeceria mucho que explicaras con mas detalle y basandote el el ejercicio de Ismael tu aporte. Es que he dejado de usar hace un tiempo excel y hay muchas cosas que se me escapan.
      tengo excel 2010 y tal como está descrito en el ejemplo con Excel 2010 no me salen las imagenes.
      gracias, saludos
      José Andrés

      Eliminar
  11. tengo un problema al imprimir la imagen no se imprime correctamente podrias ayudarme gracias

    ResponderEliminar
    Respuestas
    1. Hola Hugo,
      necesitarí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

      Eliminar
  12. Muchas gracias por compartir este truco.
    Me resolvió un problema que creía imposible de resolver y me agilizó mucho el trabajo.

    ResponderEliminar
    Respuestas
    1. Me alegro te haya sido útil...
      ese es el espíritu de mi blog.
      Cordiales saludos

      Eliminar
  13. por dios, por fin. :)
    llevo un monton de tiempo buscando una buena explicacion.
    gracias, realmente no sabes como me has ayudado con este esplicacion.


    ResponderEliminar
  14. Hola Ismael,
    Gracias 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.

    ResponderEliminar
    Respuestas
    1. Hola, y perdona no haberte contestado antes...
      tu 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

      Eliminar
  15. Muchas gracias por esta explicación. Una vez comprendidos los pasos, realmente es muy sencillo conseguirlo.
    Só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

    ResponderEliminar
    Respuestas
    1. Hola, muchas gracias a tí...

      no 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

      Eliminar
  16. 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'.

    Claridad meridiana.

    Un saludo y Gracias de nuevo por tu respuesta

    EM

    ResponderEliminar
  17. Hola,

    En 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

    ResponderEliminar
    Respuestas
    1. Hola,
      aunque 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

      Eliminar
  18. no entendí na-dita, me podrían poner un documento como ejemplo???

    ResponderEliminar
    Respuestas
    1. Hola,que tal?
      Espero 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

      Eliminar
    2. 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..
      estoy acabada :(

      Eliminar
  19. 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.

    ResponderEliminar
    Respuestas
    1. Hola Gabino,
      la 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

      Eliminar
  20. 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

    ResponderEliminar
    Respuestas
    1. Hola,
      no 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...
      :-(

      Eliminar
  21. Hola ismael tengo el siguiente problema

    me indica que existe un error en la formula =DESREF(Explicación!$I$2;COINCIDIR(Circunstancia!$B$16;CLAVE;0)-1;0, el error lo muesta en la siguiente columna "Explicación!$I$2" ya que esa columna donde me indica que existe el erro es donde se encuentra la primerra imagne como en tu ejemplo, ya estube buscando cual es el error y no puedo solucionarlo, me podrias ayudar.

    de antemano gracias

    saludos y excelente información.

    ResponderEliminar
    Respuestas
    1. Hola!! muchas gracias
      ;-=

      Necesitaría ver el fichero para encontrar el error, en principio tiene buena pinta. Si es posible, envíame tu fichero a
      excelforo@gmail.com

      Slds cordiales

      Eliminar
  22. me podrias mandar el ejemplo de tu archivo por favor, mi correo es michael_20891@hotmail.com

    ResponderEliminar
    Respuestas
    1. Hola Michael,
      lo siento de verdad, pero recientemente cambié de equipo y perdí todos los ficheros antigüos.
      De todas formas, si sigues las indicaciones paso a paso, podrás reconstruir el trabajo... y en todo caso, si hubiera alguna cosa que te fallara, puedes enviármelo a
      excelforo@gamil.com

      De nuevo lo siento, un saludo

      Eliminar
  23. Buenas Tardes Ismael

    Logre finalizar la formula unicamente cambiando los (;) por (,) pero ahora que quise implementar este producto en mi trabajo con mis compañeros, no esta cambiando la imagen, ya que cuentan con la version 2010 y no esta funcionando, me podrian apoyar indicandome que necesito hacer para que funcione en el excel 2010.

    De antemano gracias

    Saludos.

    ResponderEliminar
    Respuestas
    1. Hola,
      no debería existir diferencia entre 2007 y 2010.
      Si quieres envíame el fichero a
      excelforo@gmail.com
      y lo reviso.
      Sdls cordiales

      Eliminar
  24. Hola Ismael

    Gracias por tu pronta respuesta, sin embargo no puedo proporcionarte el archivo, ya que son políticas de la empresa, espero y entiendas eso, por otra parte no quisiera que esto cause alguna problemática y perder el apoyo que han venido brindando.

    Si me pudieras explicar cual es la causa a esta problemática que presento seria de muchísima ayuda.

    De antemano gracias

    Agradezco su comprensión

    Saludos.

    ResponderEliminar
    Respuestas
    1. Hola!
      no te preocupes... sería más fácil viendo el fichero.
      Verifica los nomnres definidos y los objetos incrustados, es lo único que se me ocurre... ya te digo que debe funcionar exactametne igual en 2007 y 2010.

      Suerte!!!

      Eliminar
  25. Muy buenas Excelforo, he intentado elaborar un libro en excel en donde a una hoja la he nombrado "base de datos" y a la otra "ficha", he seguido los pasos mas arriba mencionado y encuentro un pequeño obstaculo, nose exactamente en donde debo realizar la carga de esta asignacion, "foto =DESREF(BaseDatos!$D$2;COINCIDIR(Ficha!$A$2;Código;0)-1;0)". Si me pudiera ayudar lo antes posible le estaria muy agradecido.

    ResponderEliminar
    Respuestas
    1. Hola,
      lo importante de este ejercicio es asignar esos Nombres correctamente:
      Código =BaseDatos!$A$2:$A$5
      foto =DESREF(BaseDatos!$D$2;COINCIDIR(Ficha!$A$2;Código;0)-1;0)

      Para ello accede al Administrador de Nombres en la Ficha Fórmulas > grupo Nombres definidos, y crea los nuevos Nombres, escribiendo en el campo Se refiere a: las fórmulas:
      =BaseDatos!$A$2:$A$5
      y
      =DESREF(BaseDatos!$D$2;COINCIDIR(Ficha!$A$2;Código;0)-1;0)
      correspondientes.
      Slds cordiales

      Eliminar
  26. Hola! al introducir el nombre foto =DESREF(BaseDatos!$D$2;COINCIDIR(Ficha!$A$2;Código;0)-1;0) me da error en la fórmula. el error me indica que hay algo mal en $D$2. No termino de entender por qué. Espero vuestra ayuda. Desde ya muchas gracias. Saludos...Ignacio.

    ResponderEliminar
    Respuestas
    1. Hola Ignacio!
      bueno, si has seguido los pasos, la hoja se llama BaseDatos (como indicas en la fórmula) y has generado el Nombre definido Código no debería darte error la fórmula...Tendría que ver el fichero. Si quieres puedes enviármelo a
      excelforo@gmail.com
      Saludos

      Eliminar
  27. Hola, yo tengo excel 2010, al principio tuve el mismo invonveniente con la formula, que se soluciona reemplazando los ; por , . Pero al insertar la imagen y querer reemplazar =INCRUSTAR("Paint.Picture";"") por =foto, me da un error de referencia. Estuve viendo los otros post que sugieren y no me doy cuenta cual es la solucion.

    Muchas Gracias
    Carolina

    ResponderEliminar
  28. Hola Ismael:
    Te felicito por tu gran aporte al mundo de Excel.
    Tengo una cuestión que preguntarte que me está dando problemas.
    Últimamente Excel, al introducirle un valor entero en cualquer celda registra la centésima parte del valor. Es decir, si introduzco un valor de 120 Excel muestra 1,20.
    He verificado y no están formateadas las celdas, tampoco condicionadas.
    No se exactamente como resolver este problema.
    Te agradeceré cualquier sugerencia.
    Saludos,

    ResponderEliminar
    Respuestas
    1. Hola!
      creo que debería leer la explicación de esta entrrada
      http://excelforo.blogspot.com.es/2013/01/insertar-automaticamente-un-punto.html

      diría que ahí encontrarás la solución a tu problema.
      Cordiales saludos

      Eliminar
    2. Muchas gracias por facilitarme la solución a mi problema decimal.
      Aunque mi versión de Excel es muy vieja, 2002,pero con tu orientación pude localizar en Herramientas - Opciones - Modificar --> Número fijo de decimales, cuya casilla estaba tildada y fijada en 2 posiciones decimales.
      Te reitero mi agradecimiento y te felicito por tu vasta experiencia.
      Un cordial saludo,

      Eliminar
  29. Muchas gracias por el tutorial. Tengo un problema con la fórmula DESREF. Me marca error con el primer parámetro (En tu caso: BaseDatos!$D$2). El problema está relacionado con que la celda, o la fórmula, no me aceptan el valor de tipo Mapa de bits. Me logran devolver valores numéricos cuando me cambio a la columna de los códigos, pero no los de las imágenes. ¿Podrías explicarme qué sucede? Gracias.

    ResponderEliminar
    Respuestas
    1. Hola Aram,
      mejor envíame el fichero que tengas a
      excelforo@gmail.com
      para que lo pueda revisar...
      Como he dicho en comentarios anteriores la clave de este ejercicio está en los Nombres definidos, poco más...
      Si te has cerciorado que los nombres están bien creados, con los nombres de las hojas correctamente indicados, así como de los rangos, debería funcionar sin ningún problema.

      Slds

      Eliminar
  30. Hola, me ha funcionado perfecto y me ha sido muy util, el inconveniente lo tengo cuando quiero imprimir, no se muestra la imagen, solo un recuadro vacio. En propiedades de la imagen esta tildado imprimir objeto, he buscado en las opciones de impresion y no he encontrado otra cosa que modificar. He intentado guardarlo como pdf pero se genera de la misma manera, con el recuadro en blanco. Uso Excel 2007, que podra ser???

    Nuchas Gracias

    ResponderEliminar
    Respuestas
    1. Hola!
      pues si es algo raro... no creo sea la versión, yo lo he probado en alguna ocasión e imprime correctamente.
      Envíame el fichero a
      excelforo@gmail.com

      y lo revisaré, a ver si encuentro alguna cosa 'rara'.
      Saludos cordiales

      Eliminar
  31. Muchas Gracias por tu ayuda, te envie el mail con los archivos.

    Saludos

    ResponderEliminar
  32. Hola e visto tus tutoriales y me parecen buenos para uno que no save de todo, yo tengo una duda jala me la puedas audar a aclarar.
    Tengo un listado de peliculas digmos 10, Nombre, Genero , Imagen, lo que necesito es que cuando yo le de filtrar por genero me muestre por ejemplo las 3 peliculas de Comedia con sus Imagenes pero no el resto de ellas SI me hago entender?, al hacer filtrar por genero desaparescan las imaganes que no son de esas peliculas gracias

    ResponderEliminar
  33. amigo no seas tacaño, donde está el ejemplo de eso?

    ResponderEliminar
    Respuestas
    1. Hola que tal estás?
      Un placer saludarte igualmente.
      Gracias por tu comentario... pero puedes seguir el ejemplo expuesto en la explicación del paso a paso.
      Un saludo

      Eliminar
  34. Hola,
    He tratado de replicar el ejemplo pero al sustituir =INCRUSTAR("Paint.Picture";"") por =foto me sale un error "La referencia no es valida".

    Gracias de ante mano por tu aporte.

    ResponderEliminar
    Respuestas
    1. Hola,
      el problema es que este procedimiento sólo es válido para Excel 2007.
      En otros casos habría que aplicar macros.

      Algo parecido en
      http://excelforo.blogspot.com.es/2012/05/vba-una-macro-en-excel-para-insertar.html

      Saludos

      Eliminar
  35. Estimado Ismael buen dia ... viendo el ejemplo de como asociar una imagen a una celda en excel , 2007 .. todo me sale a la perfeccion .. lo he realizado en excel 2007 , pero cuando traslado el archivo , y lo habro en excel 2013 me pierde la el vinculo asociado de la imagen a la celda ... el archivo lo tengo grabado de las 2 formas .. como libro de excel nomal . y como libro para macros .. no he podico encontrar el porque esa perdida de imagen asociada en excel 2013

    ResponderEliminar
    Respuestas
    1. Hola Marco Antonio!,
      el problema no es tuyo, Microsoft según avanza en las versiones realiza pequeños cambios que deshabilitan algunas funcionalidades... por eso el título del post es tan especifico para Excel 2007.

      Lo siento, hasta donde yo sé, no se puede repetir esta acción... te quedaría la opción de macros
      http://excelforo.blogspot.com.es/2012/05/vba-una-macro-en-excel-para-insertar.html

      Saludos cordiales

      Eliminar
    2. Buenas tardes Ismael , he seguido los pasos de tu ejemplo .. tanto como insertar objeto del menu insertar , como de la forma insertar control activex como tu lo indicas en el ejemplo .. pero de las dos formar me sale una advertencia de "REFERENCIA INVALIDA" , tengo todo bien ..
      la pregunta es . ? microsoft office profesional plus 2010 , excel de 32 bits, la verdad ya me rendi en buscar una solucion .. tienes una ideas el porque sucede esto ?
      agradezco tu comentarios

      Saludos Cordiales

      Eliminar
    3. Hola,
      ten presente que la arquitectura de cada versión va cambiando, y aparecen y desaparecen funcionalidades... no hay más explicación, sólo debemos adaptarnos.
      Saludos

      Eliminar
  36. Muchisimas gracias por la entrada! Me ha ayudado muchisimo en el trabajo que estoy realizando.
    La verdad es que a mi me ha funcionado estupendamente con la función de validación de datos y la lista desplegable.
    No obstante, cuando intento realizar otra selección de imagen a partir de una función SI, solo consigo una imagen en blanco (es decir solo me sale el recuadro y la imagen no se añade al valor de la celda).
    La función es la siguiente:
    =SI(H23<0,169;"5";SI(H23<0,242;"4";SI(H23<0,315;"3";SI(H23<0,388;"2";"1"))))
    Y a partir de los numeros, 5, 4, 3, 2 o 1 tiene que salir una imagen u otra.
    He revisado los nombres y estan todos correctos, puede ser cosa de la función SI?

    Muchisimas gracias de antemano!

    P.D: Tengo office 2007.

    ResponderEliminar
    Respuestas
    1. Hola Silmar!
      prueba sin las comillas, quizá te lo esté reconociendo como texto (los números) y no cuadre con la búsqueda y relación posterior...
      =SI(H23<0,169;";SI(H23<0,242;4;SI(H23<0,315;3;SI(H23<0,388;2;1))))

      Saludos!

      Eliminar
    2. Muchisimas gracias por responder tan rápido!
      Es genial! Justo quité las comillas y todo ha funcionado a la perfección! La verdad es que no hay nada como saber del tema!

      Muchisimas gracias y más por estar aún contestando preguntas de una entrada de hace casi 3 años! :D
      Enhorabuena por ello!

      Eliminar
  37. Muy buenas noches. Muchas gracias por la información, está excelente y bastante útil.
    Les pido el favor si me pueden ayudar con el siguiente caso:
    Necesito también insertar una imagen que está guardada en mi computador en una carpeta específica y que coincida con el nombre de la celda adyacente, por ejemplo, si la celda A2 tiene el texto EDIFICIO, que en la celda B2 inserte la imagen que en la ruta determinada se llame EDIFICIO.
    Hay alguna manera de hacer esto?

    De antemano muchas gracias

    ResponderEliminar
    Respuestas
    1. Hola Andrés,
      me alegro te sea bastante útil todo lo explicado.
      Respecto a la cuestión que planteas, puedes leer este otro post:
      http://excelforo.blogspot.com.es/2012/05/vba-una-macro-en-excel-para-insertar.html

      Creo responde a tu pregunta.
      Un cordial saludo

      Eliminar
    2. perfecto ya funciona. Tanto con la macro que me posteas y tambien como apuntaba Gabriel Santamaria.
      muchas gracias a los dos.
      Saludos

      Eliminar
  38. Ismael
    Muy buena solución, limpia, pulcra, liviana. Me funcionó perfecto en Office 365!
    Gracias

    Ignacio

    ResponderEliminar
    Respuestas
    1. Hola Ignacio!
      muchas gracias por comentar... nunca hubiera dicho a priori que la técnica descrita funcionaría en office 365.

      un saludo

      Eliminar
  39. Hola, Gracias por el aporte. Una duda:
    Todo funciona, pero en la fila 2. Si lo hago en la fila 3 la foto hace referencia a la fila 2 ya que con la fórmula =DESREF(BaseDatos!$D$2;COINCIDIR(Ficha!$A$2;Código;0)-1;0) el nombre foto solo es para D2 y A2 (no se si me explico). He tratado de poner en lugar de =foto un Buscarv o un Si pero me dice que nombre inválido. También he probado a poner en nombre foto la fórmula =DESREF(BaseDatos!$D$2:$D$5;COINCIDIR(Ficha!$A$2;Código;0)-1;0), o sea hasta D5 pero me captura las 4 imágenes.

    Quisiera hacer algo como lo que dice Andrés Felipe, que poniendo una referencia me ponga una foto u otra pero en muchas líneas (con esto lo consigo pero solo en una y tengo 500), ya que es para una hoja para hacer ofertas que cuando ponga la referencia me salga la foto y quisiera evitar macros.

    Mil Gracias.

    ResponderEliminar
    Respuestas
    1. Hola José,
      la clave es el ajuste que se hace al COINCIDIR en =DESREF(BaseDatos!$D$2;COINCIDIR(Ficha!$A$2;Código;0)-1;0)
      que verás se resta -1, además del punto de partida.. en tu caso BaseDatos!$D$2

      Tienes que conseguir identificar la posición de la foto teniendo en cuenta el inicio, el primer argumento de DESREF y el segundo argumento que determinará cuál es la fila que te interesa.

      Para 500 fotos obviamente tendrás que pasar por programación, posiblemente construir una función personalizada que haga algo parecido a la descrita en el ejemplo.

      Espero haberte aclarado la duda.
      Un saludo

      Eliminar
    2. Muchas gracias por tu rápida respuesta. No puedo poner la fórmula en el objeto de imagen porque no lo acepta, tendría que crear tantos nombres "foto1,2,3..." como filas quiera que hagan esto (si la oferta son 20filas pues 20 nombres cambiando el número que dices o la celda de referencia). Además está el tema del tamaño cada fila tiene su alto (depende de la descripción), por tanto un tamaño de foto, a pesar de en propiedades de foto pongo que mueva y cambie con las celdas, me alarga o encoge la foto porque el bloqueo de relacción de aspecto o el proporcional al tamaño no sirven de nada. Así que aunque útil esta solución, en mi caso creo que no me sirve.
      De todas formas muchas gracias por el trabajo y aporte.
      PD: ¿porque cuando inserto una línea en medio de la base de datos, me alarga algunas fotos? (siempre de más a bajo y no lo hace siempre, es un comportamiento irregular).

      Eliminar
    3. Hola José,
      el ejemplo da de sí lo que da.. es un ejemplo de uso, como te decía para un tratamiento 'profesional' (un numero importante de fotos) se hace necesario el uso de programación.

      En cuanto a tu última cuestión la respuesta sería el tema de las propiedades de la imagen (No tanto el de bloqueo de relación)... selecciona la propiedad:
      Mover pero no cambiar tamaño
      y debería mantener el aspecto...

      Un saludo

      Eliminar
  40. Hola amigo, he estado leyendo los posts y me parecen bastante interesante.
    No se si me puedas ayudar con el siguiente problema:

    Estoy utilizando una App en mi cel para crear reportes y me apoyo con el uso de Plantiilas Excel para darle forma a los reportes que se imprimen en .Pdf. Tengo una sección de toma de fotografías las cuales se toman de par en par. Este ciclo se puede repetir N cantidad de veces. En mi plantilla puedo imprimir las fotos tomadas, pero el problema es que debo de determinar los espacios para una cantidad específica de fotos a tomar. Lo que necesito es poder tomar fotos (sin importar cuántas veces se repita el ciclo de toma de fotografías) y que el reporte continúe con la siguiente sección. Mi problema es imprimir espacios en blanco y deseo eliminarlos. Como estoy utilizando plantillas, no puedo programar en vba.

    Si me puedes ayudar con esto, te lo agradeceré bastante.

    Saludos!

    ResponderEliminar
    Respuestas
    1. Hola Paul,
      entiendo que dispones de las fotos tomadas en una hoja de cálculo, y que según las fotos realizadas (en series de N veces) quedan espacios en blanco que no desees se impriman (o en su caso se reflejen en el pdf).

      Sin macros se me ocurre que realices unas marcas en la hoja, rellenando las celdas de los extremos par que luego puedas identificar inicio y fin del área de impresión por cada serie de fotos.

      Me cuesta bastante entender la idea, pero es lo único que se me ocurre.

      Espero te sirva de algo.

      Saludos

      Eliminar
    2. Gracias amigo,
      si la idea esta algo complicada porque el trabajo que se haría en oficina de eliminar los espacios en blanco y después guardar el excel como .pdf, debe de ser automatizado. Varias personas van a estar llenando estos reportes en sus teléfonos en el campo y la idea era de que el Cliente recibiera los reportes lo mas nítidos posible. Es algo fácil de hacer si estas sentado frente a la compu, el problema es que nos solicitan que este sea un proceso automatizado.

      Siempre te agradezco por responder.

      En estos posts siempre aprendes algo nuevo.

      Saludos!!

      Eliminar
    3. A veces nos empeñamos en realizar gestiones de base de datos e imágenes en Excel, olvidando algo importante... Excel es una hoja de cálculo.
      Eso sí, muy amplia en posibilidades
      ;-)

      Quizá una herramienta específica sea más práctica para lo que necesitas.
      Saludos

      Eliminar
  41. Hola, primero de todo me gusta mucho tu página y que intentes ayudar tanto a la gente.
    Antes de realizarte la pregunta he estado buscando la respuesta incluso en otros apartados pero no hay manera.
    Me ocurre como ( n gudiniofebrero 25, 2014) al momento de imprimir o guardarlo a pdf se mueven las imágenes vinculadas del recuadro o simplemente no salen.
    Ya he mirado todas las verificaciones posibles de que se vean gráficos/imágenes pero nada ( ya que las imágenes de origen se ven perfectamente), e incluso lo he abierto en openoffice, allí si puedo verlo correctamente e imprimirlo pero las funciones de referencia a las imágenes no funcionan.
    No se si finalmente encontraste la solución, pero ya no se que más mirar para encontrar el fallo.

    Gracias

    ResponderEliminar
    Respuestas
    1. Hola Nika,
      pues lamentablemente no pude replicar este fallo (en mi caso sí se veía bien) y por tanto no pude solucionar
      :'(

      Lo siento.

      Eliminar
  42. Hola,
    Se em pierden las listas de validación cuando cierro un archivo y lo vuelvo a abrir

    ResponderEliminar
    Respuestas
    1. Hola Milagros!
      a veces ocurren que visualmente se 'ocultan' los desplegables.. pero no parece posible que desaparezca la regla de validación que lleva asociada.. busca con el cursor la posición del desplegable (donde debiera estar) y verás como aparece.

      De todas formas, si quieres, puedes enviarme ese fichero a
      excelforo@gmail.com
      y le echo un vistazo
      Saludos

      Eliminar
  43. Buenas tardes Ismael,
    He realizado la practica y me ha salido correctamente, muchas gracias por las explicaciones que presentas en este blog son muy utiles.
    Yo quisiera realizar una lista desplegable con imágenes directamente, no se si podrá hacer, a ver que me dices, porque he estado buscando por internet pero no encuentro respuesta.
    Saludos y gracias de antemano

    ResponderEliminar
    Respuestas
    1. Hola Isabel,
      Entiendo que quieres mostrar imágenes dentro de la lista desplegable...
      pues en mi opinión no creo que tal cosa sea posible.
      Date cuenta que con lo que estamos trabajando es con una regla de validación que permite introducir ciertos VALORES en una celda (en este caso los de una lista dada)... por tanto, no tendría mucho sentido poder listar imágenes...
      ;-)

      Un saludo

      Eliminar
  44. Hola Ismael,
    Muchas gracias por la explicación.
    En mi caso las imágenes se ven cortadas. Al hacer la hoja con las bases de datos tuve la precaución de que ninguna imagen superara el tamaño de una celda, pero de igual forma, al introducir un código obtengo la imagen correcta, pero no se ve completa.
    Aclaro que en mi caso al momento de introducir objeto seleccioné "Bitmap image", una vez inserta la seleccioné con botón derecho y del menú deplegable elegí "objeto imagen de mapa de bits", y luego convertir. (Hice todo esto ya que no tengo la opción de introducir una Imagen de mapa de bits)
    Espero tu respuesta, muchísimas gracias!

    ResponderEliminar
  45. Buenas tardes Ismael,

    Gracias por tu blog, me ayuda muchas veces. He intentado poner imagenes como explicas en el tutorial, pero no me sale. La verdad que mi nivel de excel, es muy de usuario, y hay algunos comandos que no he usado nunca, y me pierdo un poco.

    Mi versión además es 2003, imagino que esto también influira. Yo lo que yo quiero hacer es bastante sencillo. Yo quiero que me muestre una imagen siguiendo simplemente una condición, es decir:
    =SI(C9=101;imagen101;SI(C9=102;imagen102;SI(C9=103;imagen103;"")))

    Muchas gracias de antemano, si me puedes ayudar. Un saludo.

    ResponderEliminar
    Respuestas
    1. Hola,
      el problema de esta técnica es que sólo es válida para la versión 2007 :(
      En realidad quieres reflejar lo mismo que se expone en el ejemplo.. con un condicional en lugar de un BUSCARV... el problema es que con versión 2003 no creo se pudiera hacer tal cosa (no puedo confirmarlo por que hace bastante no tengo instalada esta versión...).

      Siento no poder ser más de ayuda.
      Un cordial saludo

      Eliminar
    2. Llevo mucho tiempo intentandolo jeje. Gracias por tu ayuda.

      Eliminar
  46. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  47. Hola Ismael,
    Me he leído bastantes veces el tema, pero a pesar de que he estado tratando de ir siguiendo los pasos, tal parece que algo estoy haciendo mal, no logro pasar de la parte en la que se pone el rango foto =DESREF(xxxxxx), me sale un eterno cero =( ...

    Se que esta es la solución a mi problema.. y es que necesito hacer un tablero en donde se automatice.. una imagen (verde, amarillo, naranja, rojo), de acuerdo al valor que se muestra en otra celda.Actualmente lo hago con formato condicional y arriba le pongo las imagenes de modo manual, dependiendo del color que tenga el dibujo del formato condicional, pero pues me quita mucho tiempo...Supongo que insertando la imagen y combinandolo con un un if.. como ya lo hizo otra persona, funcionaría.. pero no logro avanzar.. tengo excel 2010.

    Gracias por toda la ayuda que nos aportas compartiendonos tu experiencia y conocimiento
    =)

    ResponderEliminar
    Respuestas
    1. Hola Karina,
      es importante seguir el paso a paso, e identificar correctamente los Nombres definidos (casi siempre los errores están ahí).
      De todas formas tienes una alternativa que puedes ver aqui:
      http://excelforo.blogspot.com.es/2012/11/pegar-imagen-vinculada-en-excel-2010.html

      Espero te de alguna idea.
      Slds

      Eliminar
  48. Estimados, antes que nada gracias por los aportes que realizaron. Mi problema es el siguiente. He logrado el objetivo pero al querer copiar esas celdas, la cosa ya deja de funcionar. Mi objetivo es que en una planilla de resultados deportivos, al colocar el nombre de un país aparezca, en la celda contigua (derecha o izquierda) la bandera que le corresponda. El tema es que necesito la libertad de replicar el funcionamiento de esto en varias celdas y no lo logro. Mi otro problema es que no manejo macros. Si alguien puede ayudarme, se los agradeceré infinitamente. Saludos!

    ResponderEliminar
    Respuestas
    1. Hola Leito,
      me alegro mis aportes personales sobre Excel te hayan resultado útiles en algún momento.
      Respecto a tu cuestión, lo ideal sería que aplicaras una macro como esta
      http://excelforo.blogspot.com.es/2012/05/vba-una-macro-en-excel-para-insertar.html
      adaptándola a tus necesidades...
      Realizar el proceso sin macros puede resultar tedioso...
      Saludos

      Eliminar
  49. Hola, he intentado copiar el esquema, pero me ha sido imposible, me arroja error de "Referencia No Valida", la verdad no sé a qué se puede deber eso porque he copiado el esquema, es más lo he puesto de la misma manera, sin embargo no ha funcionado, ¿hay alguna manera de que me puedas ayudar dando una revisada al archivo por favor?. Envié el archivo al correo excelforo@gmail.com.

    De antemano muchas gracias.

    ResponderEliminar
  50. hola yo tengo una pregunta un poco mas sencilla, requiero extraer el color de una lista con un criterio de busqueda. ejemplo: A1 a A20 hay numeros de empleados y en B1 A B20 hay colores (tres los del semaforo) y requiero colocar en otro punto el color del empleado del cual estoy aplicando el criterio de busqueda.
    Es como buscar si con datos eso no tengo problema, ahora lo quiero hacer con colores.

    ResponderEliminar
    Respuestas
    1. Hola,
      entiendo que quieres recuperar el color de relleno de la celda (y que no es un texto escrito).
      Es un tema delicado, pero para recuperar el color de una celda puedes emplear lo descrito en
      http://excelforo.blogspot.com.es/2014/01/vba-obtener-el-color-de-relleno-o.html

      Puedes combinarla con las funciones DIRECCION, INDICE, COINCIDIR, etc normalmente y replicar un BUSCARV.

      Saludos

      Eliminar
  51. Excelente! Estaba buscando la solución a esto. Gran post. Muchas gracias.

    ResponderEliminar
  52. HOLA ISMAEL,yo tengo una consulta, necesito hacer lo mismo que este listado, pero es posible extraer la imagen desde un directorio, sin que este la imagen en otra hoja excel.

    Muchas gracias por tu ayuda!!

    ResponderEliminar
  53. Buen día amigo, excelente esta información. He estado intentando hacer exactamente el mismo ejemplo que colocas, y no puedo sustituir el imagen de mapa de bits por el nombre foto. Me indica "Referencia no válida" y no me deja avanzar. Hice exactamente todo igual! Lo que me llama la atención es que en la descripción del rango foto, todo aparece entre comillas y si se las quiero quitar me da otro mensaje de error. Donde te puedo enviar el archivo, para ver si notas algo que esté haciendo mal. Gracias.

    ResponderEliminar
    Respuestas
    1. Hola!
      este proceso sólo es válido empleando la versión Excel 2007, seguro que ese es el problema...
      Hay procesos similares para versiones superiores

      Saludos!

      Eliminar
  54. Hola, podrias apoyarme por favor... la verdad no se si he validado bien mi data, solo habia trabajado con datos, nunca con formula, quizas a eso se deba. Pero mi problema es que cuando coloco el objeto me salen las imagenes de todo la columna...

    ResponderEliminar
    Respuestas
    1. Hola Diego,
      probablemente el error aparezca por que no estés trabajando con la versión 2007...
      La técnica descrita solo es válida para esa versión.

      En cuanto me sea posible expondré el caso para otras versiones.

      Saludos

      Eliminar
  55. Hola, cordial saludo.

    Algún método que puedas recomendarme para trabajar lo mismo pero con version 2016?

    Saludos.

    ResponderEliminar
  56. Buenas Tardes, Como estas???

    Necesito una ayuda con respecto a, cómo sería el código en visual basic para agregarle a un botón que me permita buscar cualquier imagen en la computadora y cargar en un celda específica. Esto lo requiero, ya que tengo un userform donde voy llenando mi base de datos, pero me falte la opción para cargarle directamente las imágenes a cada cliente.

    Gracias de Antemano por tu ayuda.

    Saludos Cordiales!!!

    ResponderEliminar
  57. Buenas noches amigo Gracias por el gran aporte , mi duda es la siguiente, al dar vista previa no me muestra la imagen al igual que cuando lo quiero transformar a pdf con el complemento de office 2007 , lo hice y me funciona bien en mi computadora hasta me lo imprime bien pero al pasar el formato a la computadora de mi cliente no me da vista previa ni exporta en pdf la imagen :(

    ResponderEliminar
  58. he revisado en las propiedades de la imagen , y en la configfuracion de excel y nada que me soluciona. si me puedes ayudar te lo agradeceria

    ResponderEliminar
    Respuestas
    1. Hola,
      fijate que este método funciona SOLO para Excel 2007... quizá tu cliente tenga otra versión.
      Prueba con este post:
      http://excelforo.blogspot.com.es/2016/12/vincular-imagen-desplegable-Excel.html

      En todo caso, lee antes las Normas de uso del blog, para consultas profesionales hay otras vías.

      Saludos

      Eliminar
  59. Excelente aporte me ayudó muchísimo mil Gracias

    ResponderEliminar
  60. Buenos días, Tengo una duda que llevo dias intentando resolver y no hay manera. La question sq quiero crear listas desplegables dependientes como muestras aqui en el blog, però al mismo tiempo con imagenes vinculados por cada celda. Solo me deja hacerlo con una misma columna , però con distintas columnas en una misma hoja no ser como realizarlo. He estado buscando diferentes tutoriales y quizas se podria hacer con la formula coincidir, alguien lo sabe ? O como lo puedo hacer ? Muchas gracias

    ResponderEliminar
    Respuestas
    1. Hola,
      en realidad la dependencia se tendría que hacer sobre los valores desplegados, y asociando las imágenes como se indica en este post más arriba
      o también en
      http://excelforo.blogspot.com.es/2016/12/vincular-imagen-desplegable-Excel.html

      Espero te oriente algo más

      Slds

      Eliminar
  61. Hola Buenas tardes
    De antemano quiero felicitarlos por la gran ayuda que presta este foro.
    Mi duda es la siguiente:
    ¿Como hacer para que la lista desplegable no se pierda al insertar una imagen?

    ResponderEliminar
    Respuestas
    1. Hola
      lo más recomendable es emplear algo de programación
      ver este post

      o sin macros esta otra forma
      https://excelforo.blogspot.com/2016/12/vincular-imagen-desplegable-Excel.html

      Saludos cordiales

      Eliminar

Nota: solo los miembros de este blog pueden publicar comentarios.