Publicado el

Buscador en excel con carga de imágenes (macro/VBA)

Buscador Excel con Imágenes

Hace poco un familiar me pidió ayuda para realizar una búsqueda en excel pero con la particularidad de mostrar una imagen relacionada con el resultado de la búsqueda. Lo que necesitaba hacer se lograba habilitando las macros y programando un poco en Visual Basic. Tenía mucho tiempo sin utilizar Visual Basic (desde el colegio xD), así que investigando un poco logré el objetivo.

A continuación les explico cómo lo solucioné en Excel 2007, haciendo un buscador simple de personas donde mostraremos la información encontrada y una imagen correspondiente a la nacionalidad de la persona encontrada, empecemos entonces.

Lo primero que deben hacer es habilitar la opción Programador de Excel, deben ver algo como se muestra en la imagen:

Excel Opción Programador

En caso contrario deben habilitarlo y dependerá de la versión de excel que tengan, pueden ver este enlace para habilitar la opción Click Aquí.

Si necesitaramos hacer un buscador de puro texto, podemos utilizar la función BuscarV; podemos ver su uso en el enlace Click Aquí.

En nuestro caso esta función BuscarV no es suficiente, pues necesitamos mostrar una imagen relacionada y para lograr esto debemos programar un poco. La idea es entonces detectar el cambio del contenido de una celda y de acuerdo al valor de dicha celda mostrar una imagen relacionada. Antes debemos tener una carpeta con las imágenes a cargar, nombradas con el atributo de búsqueda para relacionarlas implícitamente y poderlas cargar. En nuestro ejemplo esta carpeta de imágenes se llama banderas y nuestro atributo elegido fue el id, cómo se muestra en la imagen.

Directorio Ubicación Imágenes

Teniendo nuestras imágenes, debemos ahora insertar un control activex de imagen en donde se mostrará la imagen buscada. Para lograr esto nos vamos a la sección de controles, menú insertar y en la opción Imagen (control activex). En la imagen a continuación se puede observar:

Control Activex Imagen

Ahora debemos capturar el evento “change” (cambio) de la hoja de calculo, para reaccionar si afectan nuestra celda de búsqueda. Tenemos que abrir entonces el cuadro de edición de Visual Basic dando click a la opción de ver código en el menú controles del Programador. En la siguiente imagen se puede observar:

Abrir Manejador Código

Ahora insertamos el código a continuación en nuestra hoja, que en nuestro caso se llama Hoja1. El código insertado se encargará de manejar el evento, buscar la imagen según el id ingresado, y en caso que no la encuentre colocar una imagen comodín.

Private Sub Worksheet_Change(ByVal Target As Range)
    ' Variable para almacenar la ruta de la imagen
    Dim ImagenRuta As String
    
    ' Ruta de la imagen de acuerdo al id ingresado
    ImagenRuta = ThisWorkbook.Path & "\banderas\" & Range("D4").Text & ".ico"
    
    On Error Resume Next
    
    ' Se intenta cargar la imagen
    Image1.Picture = LoadPicture(ImagenRuta)
    
    ' Manejamos el error en caso que no se encuentre la imagen
    ' colocando una imagen comodin
    If Err Then
        ImagenRuta = ThisWorkbook.Path & "\banderas\logoPC.jpg"
        Image1.Picture = LoadPicture(ImagenRuta)
    End If

End Sub

Ya con este último paso guardamos y debemos ver nuestra imagen al buscar por un id en nuestro cuadro de búsqueda.

Resultado Final

Si quieren probar el ejemplo lo pueden descargar en el enlace Click Aquí.