Filtros avanzados en Excel y enviar reporte por Email usando Outlook VBA y macros
<<CURSO COMPLETO DE MACROS EN YOUTUBE>>
En un capítulo de este Blog, vimos cómo usar Filtros avanzados en Excel. Además de optimizar los filtros usando VBA y macros. Veremos en este Video Tutorial cómo aplicar los Filtros Avanzados, además de poder enviar el rango filtrado por email, usando Microsoft Outlook de Microsoft Office.
Los filtros avanzados nos permiten tener nuestros criterios avanzados en un rango de nuestra hoja de cálculo para aplicarlos en una tabla de datos.
Ver Video Reporte de Filtro avanzado por email
Suscríbete al canal de EXCELeINFO en YouTube para aprender más de Excel y macros.
Filtros avanzados en Excel usando macros
Tenemos una sección donde ingresaremos los parámetros que se usarán para aplicar el filtro de la tabla inferior.
Figura 1. Filtros avanzados en Excel y enviar por email Outlook usando VBA y macros.
Lista de empleados
En la celda B3 tenemos una Lista de validación donde elegiremos el nombre de los empleados. En la Hoja2 tenemos una Tabla llamada Tabla1 con los títulos EMPLEADO y EMAIL. En la celda B3 de la Hoja ingresamos una lista de validación:
-
Nos vamos a la pestaña Datos > Validación de datos.
-
Permitir Lista.
-
En Origen insertamos la fórmula =INDIRECTO(“Tabla1[EMPLEADO]”)
Definir el correo a donde se enviará el filtro
En la celda H3 ingresamos una fórmula que nos devolverá el correo del empleado elegido. A este correo enviaremos el resultado del filtro.
=SI.ND(BUSCARV(B3,Tabla1[#Todo],2,0),”Falta ingresar nombre no existe”)
Activar Referencia en VBA para enviar correos
Para poder usar la macro que nos ayudará a enviar por correo el filtro, debemos activar una referencia en el VBE. Nos vamos al IDE de VBA con la combinación Alt + F11. Después nos vamos al menú Herramientas > Referencias y activamos la referencia Microsoft Outlook 16.0 Object Library.
Figura 2. Activar la referencia Microsoft Outlook 16.0 Object Library para enviar correos.
Al aplicar el filtro avanzado y elegir el botón Enviar filtro por correo, se enviará el filtro al correo indicado.
Figura 3. Enviar Filtro avanzado por Correo electrónico usando Excel y VBA.
Código VBA de las macros
La siguiente macro VBA nos ayudará a aplicar el Filtro avanzado con base en los parámetros ingresados.
Sub FiltroAvanzado() ' ' FiltroAvanzado Macro ' ' Range("Tabla4[#All]").AdvancedFilter Action:=xlFilterInPlace, CriteriaRange _ :=Range("B2:F3"), Unique:=False End Sub
La siguiente macro VBA nos permitirá enviar por correo el filtro avanzado. El procedimiento guardará una copia de los dato filtrados en un archivo nuevo, el cual quedará guardado de manera temporal y se eliminará después de enviado.
'EXCELeINFO 'MVP Sergio Alejandro Campos 'http://www.exceleinfo.com 'https://www.youtube.com/user/sergioacamposh 'http://blogs.itpro.es/exceleinfo Sub EnviarReporteCorreo() Dim NombreEmpleado As String Dim CorreoEmpleado As String Dim NuevoLibro As Workbook Dim RutaTemporal As String Dim NombreArchivo As String Dim OutlookApp As Outlook.Application Dim OItem As Outlook.MailItem NombreEmpleado = Sheets("Hoja1").Range("B3").Value CorreoEmpleado = Sheets("Hoja1").Range("H3").Value Sheets("Hoja1").Range("B6").CurrentRegion.SpecialCells(xlCellTypeVisible).Copy Set NuevoLibro = Application.Workbooks.Add Range("A1").PasteSpecial xlPasteValues Range("A1").PasteSpecial xlPasteFormats Application.CutCopyMode = False RutaTemporal = VBA.Environ("temp") & "\" NombreArchivo = RutaTemporal & "Reporte - " & NombreEmpleado & ".xlsx" NuevoLibro.SaveAs NombreArchivo Set OutlookApp = New Outlook.Application Set OItem = OutlookApp.CreateItem(olMailItem) With OItem .To = CorreoEmpleado .Subject = "Reporte - " & NombreEmpleado .Body = "Se envía reporte de ventas correspondiente a " & NombreEmpleado .Attachments.Add NombreArchivo .Send End With ActiveWorkbook.Close SaveChanges:=False VBA.Kill NombreArchivo End Sub
Descarga el archivo de ejemplo
Automatizar Fitros avanzados y enviar por correo – EXCELeINFO.zip
<<CURSO COMPLETO DE MACROS EN YOUTUBE>>
Si te gustó este tutorial por favor regístrate en nuestra Lista de correo y Suscríbete a nuestro canal de YouTube para que estés siempre enterado de lo nuevo que publicamos.