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.

Filtros avanzados en Excel y enviar por email Outlook usando VBA y macros.

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.

Activar la referencia Microsoft Outlook 16.0 Object Library para enviar correos.

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.

Enviar Filtro avanzado por Correo electrónico usando Excel y VBA.

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.

You may also like...

Leave a Reply

Your email address will not be published. Required fields are marked *

%d bloggers like this: