BUSCARV con imágenes en Excel usando vba y macros

Hola a todos. En este artículo y video veremos un ejemplo muy interesante en el que haremos uso de la función BUSCARV para devolver información de otra hoja de Excel, pero iremos más allá, además de devolver los datos correspondientes al valor buscado, también devolveremos la imagen o foto correspondiente a ese registro. Estoy seguro que este ejemplo lo podrán adecuar a un proyecto interesante y sacarle el máximo provecho.

Ver video BUSCARV con imágenes en Excel usando vba y macros

Cómo funciona

Tenemos una hoja de cálculo llamada Buscar, donde diseñamos un formulario de búsqueda de datos. La búsqueda de datos será mediante un ID. Con el uso de la función BUSCARV devolveremos los siguientes datos, mismo que se encuentran en la hoja Base:

  • Nombre
  • Apellido paterno
  • Apellido materno
  • Edad
  • Puesto
  • Departamento
  • Ventas
  • Experiencia
  • Foto o imagen ß éste es el plus que tiene este ejemplo

Uso de BUSCARV para devolver datos

Recordemos que la función BUSCARV nos ayudará a devolver información de otra hoja de Excel. Nuestro valor buscado será un ID de 4 dígitos. Los valores a devolver se encuentran en la hoja llamada Base. Hasta este punto quiero pongan atención a lo siguiente, en la hoja base, además de tener los datos de las personas, también almacenaremos el nombre de la imagen correspondiente a cada registro. Las imágenes deberán estar en una carpeta llamada emoticones, y debe estar en la misma ubicación que el archivo de Excel.

Las imágenes deben estar en la carpeta que definamos para las imágenes y los nombres deben coincidir.

Figura 1. Las imágenes deben estar en la carpeta que definamos para las imágenes y los nombres deben coincidir.

BUSCARV para devolver imágenes

Al analizar este ejemplo te darás cuenta que la función BUSCARV no precisamente nos devolverá una imagen, pero sí el nombre del archivo de imagen correspondiente al valor buscado, y mediante el evento Worksheet_Change y código vba (macros) mostraremos la imagen o foto que coincida con el nombre de archivo.

Para mostrarla imagen es necesario insertar una forma rectangular, siguiendo los siguientes pasos:

  • Ficha Insertar > Ilustraciones > Formas > Rectángulo.
  • Dibujamos el rectángulo en el rango F13 y le ajustamos el tamaño.
  • Le cambiamos el nombre a la forma y le ponemos Foto.

Es importante que la forma rectangular tenga el nombre Foto para que la macro funcione.

Figura 2. Es importante que la forma rectangular tenga el nombre Foto para que la macro funcione.

Cómo funciona la macro

Como dije anteriormente, haremos uso del evento Worksheet_Change, que nos ayudará a detectar cualquier cambio en la hoja, como escribir un ID, y lo que hará la macro es, buscar un archivo que se llame igual al nombre que tiene el registro mostrado (celda F13) y haciendo uso de la propiedad Fill se rellenará el rectángulo con la imagen encontrada.

 Al escribir el ID se mostrará el nombre de la imagen y al encontrar un archivo con ese nombre, se mostrará la imagen.

Figura 3. Al escribir el ID se mostrará el nombre de la imagen y al encontrar un archivo con ese nombre, se mostrará la imagen.

Código vba de la macro

Damos clic derecho en la etiqueta de la hoja Buscar y veremos el siguiente código VBA:

Option Explicit
'
'EXCELeINFO
'MVP Sergio Alejandro Campos
'http://www.exceleinfo.com
'https://www.youtube.com/user/sergioacamposh
'http://blogs.itpro.es/exceleinfo
'
Private Sub Worksheet_Change(ByVal Target As Range)
'Declaramos variables
Dim RutaArchivo As String
Dim RutaImagen As String

'En caso de error...
On Error GoTo ErrorHandler

'Obtenemos la ruta del archivo actual
RutaArchivo = ThisWorkbook.Path
'Definimos la ruta de la carpeta de las imágenes
RutaImagen = RutaArchivo & "\emoticones\" & Sheets("Buscar").Range("F13").Value

'Reemplazamos imagen...
ActiveSheet.Shapes("Foto").Fill.UserPicture (RutaImagen)

Exit Sub
ErrorHandler:
ActiveSheet.Shapes("Foto").Fill.UserPicture (RutaArchivo & "\emoticones\no-photo.png")

End Sub

Descarga los archivos de ejemplo

Descargar el ejemplo BUSCARV con imágenes en Excel usando vba – EXCELeINFO.zip

You may also like...