
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



