Introducción
Enviar informes de Excel por correo mediante una macro puede ahorrar una cantidad considerable de tiempo cuando una empresa prepara periódicamente documentos para clientes, departamentos, proveedores o responsables internos. En lugar de abrir cada archivo, redactar un mensaje, localizar el destinatario y adjuntar manualmente el informe, una solución programada puede realizar buena parte del proceso de forma controlada.
Durante muchos años, la opción habitual ha sido utilizar una macro VBA de Excel para controlar Outlook instalado en el mismo ordenador. Este método continúa siendo válido en determinados entornos, pero depende de aplicaciones de escritorio, perfiles configurados y permisos locales. En proyectos nuevos también puede plantearse otra arquitectura: Excel prepara el informe y llama a una API encargada de enviar el correo desde un servicio externo.
La segunda alternativa separa la generación del informe del sistema de mensajería. Puede resultar más flexible, escalable y adecuada para procesos empresariales, aunque exige configurar autenticación, seguridad, control de errores y un servicio de correo compatible.
Índice
Qué partes del envío pueden automatizarse
Una macro no tiene por qué limitarse a pulsar virtualmente el botón de enviar. El proceso completo puede incluir la actualización de datos, la selección de registros, la generación de documentos, la construcción del mensaje y el registro del resultado.
Entre las tareas que pueden automatizarse se encuentran las siguientes:
- Actualizar consultas, fórmulas, tablas dinámicas y gráficos.
- Filtrar los datos correspondientes a cada cliente o destinatario.
- Crear un libro independiente para cada receptor.
- Exportar una hoja, un rango o un conjunto de hojas a PDF.
- Asignar al archivo un nombre personalizado.
- Obtener la dirección de correo desde una tabla de configuración.
- Crear un asunto distinto para cada informe.
- Insertar datos variables en el cuerpo del mensaje.
- Adjuntar uno o varios documentos.
- Guardar el mensaje como borrador para una revisión humana.
- Enviar el mensaje automáticamente cuando se cumplan determinadas condiciones.
- Registrar la fecha, el destinatario, el archivo enviado y el resultado de la operación.
En muchos proyectos resulta útil combinar este proceso con una macro para exportar informes de Excel a PDF automáticamente. De este modo, el documento adjunto se genera inmediatamente antes del envío y contiene la información más reciente.
Flujo general de una macro de envío
Antes de programar, conviene definir un flujo de trabajo claro. La macro debería conocer qué informe tiene que generar, quién debe recibirlo, qué contenido debe incluir el mensaje y qué hacer cuando aparece un error.
- Validar que el libro contiene los datos necesarios.
- Actualizar las fuentes de información.
- Identificar los registros pendientes de procesar.
- Preparar el informe correspondiente a cada registro.
- Guardar el documento en una ruta temporal o definitiva.
- Comprobar que el archivo existe y no está vacío.
- Obtener y validar la dirección del destinatario.
- Construir el asunto y el cuerpo del mensaje.
- Crear el correo mediante Outlook o solicitar su envío a una API.
- Guardar el resultado en una hoja de control.
- Eliminar archivos temporales cuando corresponda.
- Mostrar un resumen final de la ejecución.
Este orden evita que el sistema intente enviar un correo antes de haber creado correctamente su adjunto. También permite separar las responsabilidades del programa y facilita la localización de errores.
Método tradicional con Excel y Outlook
El método clásico consiste en utilizar VBA para controlar Outlook mediante automatización COM. La macro abre o reutiliza una instancia de Outlook, crea un mensaje, completa sus propiedades, añade los archivos y presenta o envía el correo.
Requisitos habituales
- Excel de escritorio para Windows.
- Outlook instalado en el mismo ordenador.
- Un perfil de correo configurado y operativo.
- Permisos para ejecutar macros y controlar otras aplicaciones.
- Acceso a los archivos que se van a adjuntar.
Ventajas del método con Outlook
- Es relativamente sencillo para pequeños procesos internos.
- Puede utilizar la cuenta ya configurada por el usuario.
- Permite mostrar el mensaje antes de enviarlo.
- El usuario puede revisar destinatario, asunto, texto y adjuntos.
- Puede guardar los mensajes en la carpeta de borradores.
- No obliga a contratar o configurar inicialmente un servicio de correo adicional.
Limitaciones del método con Outlook
- Depende de un ordenador concreto y de aplicaciones instaladas localmente.
- Puede fallar si cambia el perfil de Outlook.
- No es la opción más adecuada para ejecuciones desatendidas en un servidor.
- Puede verse afectado por avisos de seguridad, políticas corporativas o actualizaciones.
- El comportamiento puede variar entre versiones y configuraciones de Office.
- Resulta difícil escalar cuando aumenta mucho el número de mensajes.
- Obliga a mantener Excel y Outlook abiertos o disponibles durante la ejecución.
Para una microempresa que envía unos pocos informes desde un puesto de trabajo estable, este sistema puede ser suficiente. Sin embargo, no debería elegirse automáticamente solo porque sea la solución históricamente más conocida.
Método moderno mediante una API de correo
Una alternativa consiste en utilizar Excel únicamente para preparar los datos y los archivos. Cuando el informe está listo, la macro realiza una solicitud HTTPS a una API de correo. El servicio remoto recibe los datos, autentica la petición, construye el mensaje y lo entrega al servidor de correo correspondiente.
La arquitectura puede representarse de manera simplificada así:
- Excel genera el informe.
- La macro convierte los parámetros del mensaje a un formato aceptado por la API.
- La macro realiza una solicitud web autenticada.
- La API valida la petición.
- El servicio envía el correo.
- La API devuelve un código de resultado.
- Excel registra la respuesta.
Qué datos puede recibir la API
- Remitente autorizado.
- Destinatario principal.
- Destinatarios en copia o copia oculta.
- Asunto.
- Cuerpo en texto plano o HTML.
- Nombre del archivo adjunto.
- Contenido del archivo codificado.
- Plantilla de correo que debe utilizarse.
- Identificador interno del cliente o del informe.
- Etiquetas para clasificar y rastrear el envío.
Ventajas de utilizar una API
- No depende de Outlook instalado en el ordenador.
- Puede funcionar desde diferentes equipos o entornos controlados.
- Separa el procesamiento de Excel del sistema de mensajería.
- Permite centralizar las credenciales y las políticas de envío.
- Facilita el registro de entregas, rechazos y errores.
- Puede integrarse con plantillas profesionales.
- Es más adecuada para procesos escalables o desatendidos.
- Permite sustituir el proveedor de correo sin rehacer toda la generación de informes.
Inconvenientes y requisitos adicionales
- Es necesario disponer de una API propia o de un proveedor compatible.
- Debe implementarse un sistema seguro de autenticación.
- La macro tiene que construir solicitudes HTTP correctamente.
- Los archivos adjuntos pueden requerir codificación o carga previa.
- Hay que gestionar límites de tamaño y frecuencia.
- Conviene interpretar las respuestas y los códigos de error.
- Puede existir un coste por volumen de correos enviados.
- Es necesario configurar correctamente el dominio remitente para reducir rechazos y suplantaciones.
Comparación entre Outlook y una API
| Criterio | Excel y Outlook | Excel y API de correo |
|---|---|---|
| Dependencia de aplicaciones instaladas | Alta | Baja |
| Configuración inicial | Generalmente sencilla | Más técnica |
| Revisión manual antes del envío | Muy sencilla | Debe diseñarse expresamente |
| Ejecución desatendida | Limitada | Más adecuada |
| Escalabilidad | Reducida o media | Media o alta, según el proveedor |
| Control centralizado | Dependiente del equipo | Más fácil de centralizar |
| Registro técnico de entregas | Limitado | Normalmente más completo |
| Gestión de credenciales | Perfil local de Outlook | Token, clave o identidad de servicio |
| Coste del servicio | Integrado en el entorno existente | Puede depender del volumen |
| Adecuación para pocos envíos manualmente supervisados | Alta | Posible, pero puede ser excesiva |
| Adecuación para procesos empresariales recurrentes | Media | Alta |
No existe una opción universalmente mejor. Outlook puede ser suficiente para cinco informes mensuales revisados por una persona. Una API suele ser más apropiada para cientos de mensajes, múltiples usuarios, ejecución programada o necesidad de trazabilidad detallada.
Preparación de los informes antes del envío
El envío de correo es solo la última parte del proceso. La fiabilidad depende en gran medida de cómo se prepara el documento adjunto.
Actualizar los datos antes de generar el archivo
La macro debe asegurarse de que las fórmulas, consultas y tablas dinámicas están actualizadas. De lo contrario, podría enviar un documento técnicamente correcto pero con información desfasada.
Elegir el formato adecuado
Un informe puede enviarse como libro de Excel, PDF, CSV u otro formato. El PDF resulta adecuado cuando el destinatario solo debe consultar o imprimir el contenido. El libro de Excel puede ser necesario cuando debe trabajar con los datos, aplicar filtros o incorporar información adicional.
Evitar vínculos externos innecesarios
Cuando se distribuyen libros de Excel, conviene revisar si contienen vínculos a archivos locales, rutas de red o libros que el destinatario no puede abrir. Una solución automatizada puede copiar valores, eliminar conexiones o generar un archivo independiente.
Asignar nombres de archivo claros
El nombre debería permitir identificar el documento sin abrirlo. Por ejemplo, puede combinar el tipo de informe, el cliente y el periodo:
Informe_ventas_Cliente_025_2026-06.pdf
También es recomendable eliminar caracteres no permitidos en nombres de archivo y limitar su longitud.
Comprobar que el archivo se ha creado
Antes de adjuntarlo, la macro debe verificar que la ruta existe y que el archivo tiene un tamaño razonable. Esta sencilla comprobación evita mensajes sin adjunto o con documentos vacíos.
Destinatarios y personalización de mensajes
Las direcciones de correo no deberían estar escritas directamente dentro del código salvo en casos muy simples. Es preferible almacenarlas en una hoja de configuración, una tabla estructurada, una base de datos o un sistema externo.
Estructura de una tabla de envíos
| Campo | Ejemplo de contenido | Uso |
|---|---|---|
| ID | CLI-0025 | Identificador interno |
| Nombre | Cliente 25 | Personalización del mensaje |
| Correo | administracion@ejemplo.es | Destinatario principal |
| Copia | responsable@ejemplo.es | Destinatario secundario |
| Periodo | Junio de 2026 | Asunto y contenido |
| Ruta | C:\Informes\CLI-0025.pdf | Archivo que debe adjuntarse |
| Estado | Pendiente | Control de procesamiento |
Validación de direcciones
Una macro puede comprobar que el campo no está vacío y que contiene una estructura básica de correo. Esta validación no garantiza que la cuenta exista, pero permite detectar errores evidentes antes de intentar el envío.
Personalización del asunto
Un asunto específico ayuda al destinatario a identificar el contenido y facilita búsquedas posteriores. Por ejemplo:
Informe mensual de operaciones | Cliente 25 | Junio de 2026
Personalización del cuerpo
El texto puede incorporar el nombre del destinatario, el periodo analizado, una breve explicación del documento y un canal de contacto. No conviene generar mensajes excesivamente largos cuando el propósito principal es entregar un informe.
Seguridad y protección de credenciales
La seguridad es especialmente importante cuando Excel se conecta directamente con un servicio externo. Una clave de API escrita en una celda, incluida literalmente en el código VBA o guardada en un archivo compartido puede ser extraída y utilizada sin autorización.
No guardar secretos directamente en el libro
Un proyecto profesional debería evitar que las credenciales queden visibles dentro del archivo. Las macros VBA pueden protegerse para dificultar modificaciones accidentales, pero esa protección no debe considerarse un sistema seguro para almacenar secretos.
Utilizar un servicio intermediario
Una arquitectura más robusta consiste en crear un pequeño servicio intermedio. Excel se autentica ante ese servicio con permisos limitados y el servicio conserva las credenciales reales del proveedor de correo. De este modo, la clave principal no se distribuye junto con la hoja de cálculo.
Limitar los permisos
Las credenciales utilizadas deberían tener únicamente los permisos necesarios para enviar mensajes. No deberían permitir administrar cuentas, leer buzones completos ni modificar otros recursos que no intervienen en el proceso.
Usar conexiones cifradas
Las solicitudes a la API deben realizarse mediante HTTPS y deben rechazarse configuraciones que transmitan datos o credenciales sin cifrar.
Proteger los datos personales
Los informes pueden contener información económica, comercial o personal. La solución debe controlar quién puede generarlos, dónde se guardan, durante cuánto tiempo permanecen en carpetas temporales y qué destinatarios están autorizados para recibirlos.
Control, trazabilidad y prevención de errores
Un sistema automático no debería limitarse a mostrar un mensaje indicando que el proceso ha terminado. Debe dejar constancia suficiente para saber qué ocurrió con cada informe.
Registro mínimo recomendado
- Identificador del proceso.
- Fecha y hora del intento.
- Usuario o equipo que ejecutó la macro.
- Destinatario.
- Asunto.
- Nombre y ruta del archivo.
- Método utilizado para el envío.
- Resultado devuelto por Outlook o por la API.
- Mensaje de error, si lo hubo.
- Número de intentos.
Evitar duplicados
Antes de enviar, la macro puede comprobar si ese informe ya figura como procesado. Para ello conviene utilizar un identificador único compuesto, por ejemplo, por el cliente, el tipo de informe y el periodo.
Diferenciar creación y envío
En procesos delicados puede utilizarse una ejecución en dos fases:
- La macro genera todos los informes y prepara los mensajes.
- Una persona revisa una muestra o la totalidad de los resultados.
- Una segunda acción autoriza el envío definitivo.
Esta separación reduce el riesgo de distribuir documentos incorrectos a muchos destinatarios.
Controlar los límites de frecuencia
El proveedor de correo puede limitar el número de mensajes por minuto, hora o día. La macro debe respetar esos límites, introducir pausas cuando sea necesario y reintentar únicamente los errores temporales.
No confundir aceptación con entrega
Que Outlook o una API acepte el mensaje no garantiza que el destinatario lo reciba. El correo puede ser rechazado posteriormente, quedar retenido o clasificarse como no deseado. Los procesos más exigentes deben recoger también notificaciones de entrega, rechazo o rebote.
Ejemplo orientativo con Outlook
El siguiente código muestra una estructura básica para crear un correo desde Excel mediante Outlook. Utiliza enlace tardío, por lo que no exige activar manualmente una referencia concreta en el editor de VBA.
Option Explicit
Public Sub PrepararCorreoConOutlook()
Const olMailItem As Long = 0
Dim outlookApp As Object
Dim correo As Object
Dim destinatario As String
Dim asunto As String
Dim cuerpo As String
Dim rutaAdjunto As String
On Error GoTo ControlError
destinatario = Trim$(ThisWorkbook.Worksheets("Configuracion").Range("B2").Value)
asunto = Trim$(ThisWorkbook.Worksheets("Configuracion").Range("B3").Value)
cuerpo = CStr(ThisWorkbook.Worksheets("Configuracion").Range("B4").Value)
rutaAdjunto = Trim$(ThisWorkbook.Worksheets("Configuracion").Range("B5").Value)
If destinatario = vbNullString Then
Err.Raise vbObjectError + 1000, , "No se ha indicado el destinatario."
End If
If Dir$(rutaAdjunto, vbNormal) = vbNullString Then
Err.Raise vbObjectError + 1001, , "No se encuentra el archivo adjunto."
End If
On Error Resume Next
Set outlookApp = GetObject(, "Outlook.Application")
On Error GoTo ControlError
If outlookApp Is Nothing Then
Set outlookApp = CreateObject("Outlook.Application")
End If
Set correo = outlookApp.CreateItem(olMailItem)
With correo
.To = destinatario
.Subject = asunto
.Body = cuerpo
.Attachments.Add rutaAdjunto
.Display
End With
Salida:
Set correo = Nothing
Set outlookApp = Nothing
Exit Sub
ControlError:
MsgBox "No se pudo preparar el correo." & vbCrLf & _
"Detalle: " & Err.Description, _
vbExclamation, "Envío de informes"
Resume Salida
End Sub
El ejemplo utiliza .Display para abrir el mensaje y permitir una revisión. Sustituirlo por .Send provocaría el intento de envío automático. En un proyecto real, esa decisión debería depender de reglas de validación, permisos y controles previos.
También sería necesario ampliar el código para procesar varias filas, generar cada archivo, registrar el resultado y evitar duplicados.
Estructura orientativa de una llamada a una API
Una macro puede realizar solicitudes HTTP mediante componentes disponibles en Windows. El código concreto depende del formato exigido por la API, del método de autenticación y de la forma de adjuntar documentos.
El siguiente ejemplo no está vinculado a un proveedor real. Su objetivo es mostrar la estructura general de una petición JSON:
Option Explicit
Public Function SolicitarEnvioAPI( _
ByVal destinatario As String, _
ByVal asunto As String, _
ByVal cuerpo As String, _
ByVal tokenTemporal As String) As String
Dim solicitud As Object
Dim url As String
Dim json As String
On Error GoTo ControlError
url = "https://api.ejemplo.local/v1/correos"
json = "{" & _
"""destinatario"":""" & EscaparJSON(destinatario) & """," & _
"""asunto"":""" & EscaparJSON(asunto) & """," & _
"""cuerpo"":""" & EscaparJSON(cuerpo) & """" & _
"}"
Set solicitud = CreateObject("WinHttp.WinHttpRequest.5.1")
With solicitud
.Open "POST", url, False
.SetRequestHeader "Content-Type", "application/json; charset=utf-8"
.SetRequestHeader "Authorization", "Bearer " & tokenTemporal
.Send json
If .Status >= 200 And .Status < 300 Then
SolicitarEnvioAPI = .ResponseText
Else
Err.Raise vbObjectError + 1100, , _
"La API devolvió el estado " & .Status & _
": " & .ResponseText
End If
End With
Salida:
Set solicitud = Nothing
Exit Function
ControlError:
SolicitarEnvioAPI = "ERROR: " & Err.Description
Resume Salida
End Function
Private Function EscaparJSON(ByVal texto As String) As String
texto = Replace(texto, "\", "\\")
texto = Replace(texto, """", "\""")
texto = Replace(texto, vbCrLf, "\n")
texto = Replace(texto, vbCr, "\n")
texto = Replace(texto, vbLf, "\n")
EscaparJSON = texto
End Function
Para adjuntar un archivo pueden utilizarse distintas estrategias:
- Codificar el contenido en Base64 e incluirlo en el JSON.
- Enviar una solicitud multipart/form-data.
- Cargar primero el documento y utilizar después su identificador.
- Guardar el archivo en un repositorio autorizado y enviar un enlace protegido.
Incluir un archivo completo dentro de una solicitud aumenta considerablemente el tamaño transmitido. Por ello, deben controlarse los límites del proveedor y evitar adjuntar documentos innecesariamente grandes.
Arquitectura recomendada para procesos profesionales
Para un proceso empresarial recurrente puede ser conveniente dividir la solución en componentes independientes:
- Excel: mantiene la configuración funcional, selecciona los registros y genera los informes.
- Macro VBA: valida los datos, prepara la solicitud y registra la respuesta.
- Servicio intermedio: autentica a Excel, protege las credenciales y aplica reglas de negocio.
- Proveedor de correo: realiza la entrega y devuelve información técnica.
- Registro central: conserva el historial de envíos, errores y reintentos.
Esta separación permite modificar el diseño del informe sin alterar el proveedor de correo. También permite cambiar el proveedor sin rehacer toda la lógica de Excel.
En empresas con varios departamentos, el servicio intermedio puede comprobar qué remitentes y destinatarios están autorizados. Esto ayuda a evitar que un libro modificado envíe información a direcciones no aprobadas.
Pruebas necesarias antes de utilizar la macro
Una solución de correo debe probarse con más cuidado que una macro que únicamente transforma datos. Un error puede provocar la difusión de documentos equivocados o el envío masivo de mensajes duplicados.
Pruebas funcionales
- Envío a un único destinatario de pruebas.
- Mensaje sin copia y con copia.
- Informe en PDF y en formato Excel.
- Nombre de cliente con caracteres especiales.
- Dirección de correo vacía o incorrecta.
- Archivo adjunto inexistente.
- Archivo abierto o bloqueado.
- Fallo de conexión.
- Respuesta de autenticación rechazada.
- Superación del límite de tamaño.
Pruebas de volumen
La solución debería probarse primero con unos pocos registros, después con un lote intermedio y finalmente con un volumen próximo al previsto. Esto permite medir el tiempo de ejecución y detectar límites del servicio.
Entorno de pruebas separado
Durante el desarrollo conviene sustituir los destinatarios reales por una cuenta controlada. También puede establecerse una regla que bloquee cualquier dominio no autorizado hasta que el proyecto haya sido validado.
Modo simulación
Una función especialmente útil es el modo de simulación. En este modo, la macro genera archivos y registra qué mensajes habría enviado, pero no realiza la entrega. Es una forma práctica de revisar el proceso completo sin riesgo.
Errores frecuentes al automatizar el envío
- Introducir las direcciones de correo directamente en muchas partes del código.
- Enviar sin comprobar que el informe corresponde al destinatario.
- Utilizar una contraseña o clave de API escrita en una celda.
- No guardar un historial de operaciones.
- Marcar un registro como enviado antes de recibir una respuesta satisfactoria.
- Repetir todo el lote después de un error parcial.
- No distinguir entre errores temporales y definitivos.
- Adjuntar el libro principal con información de todos los clientes.
- Enviar archivos con vínculos externos o rutas internas.
- Utilizar automáticamente el campo de copia oculta para grandes listas.
- No establecer límites máximos de mensajes por ejecución.
- Eliminar los archivos temporales antes de confirmar que fueron procesados.
La mayoría de estos problemas se evita mediante validaciones, identificadores únicos, registros detallados y una fase de revisión.
Cuándo conviene un desarrollo a medida
Una macro sencilla puede ser suficiente cuando existe un único formato de informe, pocos destinatarios y una persona supervisa cada envío. Sin embargo, la complejidad aumenta rápidamente cuando aparecen diferentes plantillas, reglas de acceso, varios remitentes, informes personalizados o requisitos de trazabilidad.
Un desarrollo a medida resulta especialmente conveniente cuando:
- Los informes deben generarse para numerosos clientes.
- Cada destinatario recibe documentos diferentes.
- La información procede de varios libros o sistemas.
- El envío debe realizarse en horarios programados.
- Se necesita una API intermedia segura.
- Deben registrarse entregas, errores y reintentos.
- La empresa necesita evitar duplicados.
- Existen datos confidenciales o personales.
- El proceso debe poder mantenerse y ampliarse.
Antes de programar, es recomendable documentar las entradas, las salidas, las reglas y las excepciones. El artículo sobre qué información necesita un programador para crear una macro Excel explica qué materiales ayudan a definir correctamente este tipo de proyecto.
También puede ser útil revisar previamente cómo detectar tareas de Excel que deberían automatizarse. No todos los envíos justifican una solución compleja, pero los procesos repetitivos, estables y sujetos a errores manuales suelen ser buenos candidatos.
Conclusión
Enviar informes de Excel por correo mediante una macro puede convertir una tarea repetitiva en un proceso controlado y mucho más rápido. La solución tradicional basada en Excel y Outlook sigue siendo útil para pequeños volúmenes, equipos concretos y envíos supervisados.
La integración mediante una API proporciona una arquitectura más desacoplada. Reduce la dependencia de Outlook, facilita la ejecución desatendida y permite centralizar la seguridad, el registro y las reglas de envío. A cambio, requiere una configuración técnica más cuidadosa.
La decisión no debe basarse únicamente en cuál de los dos métodos necesita menos código inicial. También deben valorarse el número de mensajes, la sensibilidad de los documentos, la necesidad de revisión humana, la trazabilidad, el mantenimiento y el crecimiento previsto del proceso.
Una automatización fiable no se limita a enviar correos. Debe generar el documento correcto, asignarlo al destinatario adecuado, proteger las credenciales, registrar cada intento y detenerse de forma segura cuando detecta una anomalía.
Preguntas frecuentes
¿Es obligatorio tener Outlook instalado para enviar correos desde Excel?
No. Outlook es necesario cuando la macro utiliza la automatización de su aplicación de escritorio. También es posible realizar el envío mediante una API, un servicio intermedio u otra infraestructura autorizada.
¿Una macro puede enviar correos automáticamente sin mostrarlos?
Sí. Tanto Outlook como muchas API permiten realizar envíos sin abrir una ventana de revisión. No obstante, esta opción debería activarse únicamente después de implantar validaciones, registros y controles contra duplicados.
¿Es mejor enviar directamente o crear borradores?
Depende del riesgo del proceso. Los borradores son adecuados cuando una persona debe revisar el contenido. El envío directo puede utilizarse en procesos estables, validados y con reglas claras.
¿Se pueden adjuntar varios informes en un mismo correo?
Sí. La macro puede recorrer una colección de rutas y añadir varios documentos. Conviene comprobar previamente el tamaño total y confirmar que todos pertenecen al mismo destinatario.
¿Puede generarse un correo diferente para cada cliente?
Sí. El asunto, el cuerpo, los destinatarios y los adjuntos pueden construirse a partir de una tabla de configuración o de los datos disponibles en el libro.
¿Es seguro guardar una clave de API dentro del código VBA?
No es la opción recomendada. El código VBA y el contenido del libro pueden inspeccionarse. Para procesos profesionales conviene utilizar credenciales temporales, almacenamiento protegido o un servicio intermedio.
¿Cómo se evita enviar dos veces el mismo informe?
Puede utilizarse un identificador único por cliente, informe y periodo. Antes de enviar, la macro consulta el registro de operaciones y comprueba si ese identificador ya fue procesado satisfactoriamente.
¿Puede enviarse el informe como PDF?
Sí. La macro puede exportar una hoja o un conjunto de hojas a PDF, comprobar que el archivo se ha creado y adjuntarlo posteriormente al mensaje.
¿Una API garantiza que el destinatario reciba el correo?
No. Una respuesta correcta normalmente indica que el servicio ha aceptado la solicitud. La entrega final puede verse afectada por rechazos, filtros, buzones llenos o políticas del servidor receptor.
¿Qué opción es más adecuada para una pequeña empresa?
Para pocos envíos revisados manualmente, Outlook puede ser suficiente. Para procesos periódicos, varios usuarios, mayor volumen o necesidad de trazabilidad, suele resultar más conveniente una API bien diseñada.