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