¿Cómo automatizar el envío de reportes diarios con VBA?

Automatizar el envío de reportes diarios utilizando VBA (Visual Basic for Applications) en Excel implica escribir un script que recopile los datos necesarios, genere el reporte y lo envíe por correo electrónico. A continuación, te proporcionaré una guía básica para realizar esta tarea:

Paso 1: Preparar el Reporte

  • Organiza tus datos: Asegúrate de que tus datos estén en un formato que pueda ser fácilmente procesado por VBA, generalmente en una hoja de Excel.
  • Crea una plantilla de reporte: Si deseas que el reporte tenga un formato específico, crea una plantilla que pueda ser llenada por el script de VBA.

Paso 2: Escribir el Script en VBA

Para enviar correos electrónicos desde Excel, puedes usar Microsoft Outlook, así que asegúrate de tener configurado Outlook en tu computadora.

  • Abre el Editor de VBA:
    • Ve a Excel, y presiona `ALT + F11` para abrir el Editor de VBA.
    • Inserta un nuevo módulo (`Insert > Module`).
  • Escribe el Código:

Aquí tienes un ejemplo básico para enviar un correo electrónico con Outlook:

   Sub EnviarReporteDiario()
       Dim OutlookApp As Object
       Dim OutlookMail As Object
       Dim Rango As Range
       Dim CuerpoCorreo As String
       Dim i As Integer
       
       ' Define el rango de las celdas si necesitas enviar inmediatamente lo que está en una hoja.
       Set Rango = ThisWorkbook.Sheets("Hoja1").Range("A1:D20") ' Cambia el rango según tus necesidades
       
       ' Inicializa Outlook
       On Error Resume Next
       Set OutlookApp = GetObject(, "Outlook.Application")
       If Err.Number <> 0 Then
           Set OutlookApp = CreateObject("Outlook.Application")
       End If
       On Error GoTo 0
       
       ' Crea un nuevo correo
       Set OutlookMail = OutlookApp.CreateItem(0)
       
       ' Construye el cuerpo del correo a partir del rango de celdas
       For i = 1 To Rango.Rows.Count
           CuerpoCorreo = CuerpoCorreo & Rango.Cells(i, 1).Value & vbTab & Rango.Cells(i, 2).Value & vbCrLf
       Next i
       
       ' Configura el correo
       With OutlookMail
           .To = "destinatario@ejemplo.com" ' Cambia esto a la dirección de correo del destinatario
           .Subject = "Reporte Diario"
           .Body = "Adjunto encontrarás el reporte diario." & vbCrLf & vbCrLf & CuerpoCorreo
           '.Attachments.Add ThisWorkbook.FullName ' Si deseas adjuntar el archivo Excel
           .Display ' Cambia a .Send para enviar automáticamente
       End With
       
       ' Limpieza
       Set OutlookMail = Nothing
       Set OutlookApp = Nothing
   End Sub

Paso 3: Programar la Ejecución Automática

  • Utiliza el Programador de Tareas de Windows para ejecutar el script a una hora específica cada día. Para ello, deberás guardar el archivo Excel habilitado para macros (`*.xlsm`).
  • Crear un Archivo .vbs: Esto te permitirá ejecutar la macro sin abrir Excel manualmente.

Crea un archivo de texto, escribe el siguiente contenido y guárdalo con la extensión `.vbs`:

   Dim ExcelApp
   Set ExcelApp = CreateObject("Excel.Application")
   ExcelApp.Application.Run "NombreDeTuArchivo.xlsm!EnviarReporteDiario"
   ExcelApp.Quit
   Set ExcelApp = Nothing
  • Configura el Programador de Tareas:
    • Busca «Programador de tareas» en el menú de inicio de Windows y ábrelo.
    • Selecciona «Crear tarea básica».
    • Sigue los pasos del asistente para programar la ejecución del archivo `.vbs` a una hora específica cada día.

Con estos pasos, habrás automatizado el proceso de envío de reportes diarios utilizando VBA en Excel y el Programador de Tareas de Windows. Asegúrate de adaptar las partes del script que se refieren a rangos de celdas, direcciones de correo electrónico y estructura del mensaje según tus necesidades específicas.

Conoce nuestros servicios

Conoce nuestra tienda

Mejora tu nivel y logra tus objetivo

Excel

Excel cursos

Access

cursos de Access

Power BI

cursos power BI

Deja un comentario