¿Cómo enviar mensajes de correo electrónico desde una hoja de cálculo excel utilizando scripts vba
El uso de mensajes de correo electrónico como parte de cualquier programa es una buena manera de automatizar las tareas importantes, y también mejora significativamente el valor y la funcionalidad de cualquier programa o script.
En el pasado, he usado correo electrónico mucho en mis trabajos por lotes y otros scripts automatizados, al igual que he descrito en artículos anteriores aquí sobre el uso de herramientas como Enviar correo o Blat para emitir mensajes de correo electrónico directamente desde la línea de comandos o desde un script de línea de comandos.Enviar correos electrónicos automatizados Uso SendEmail & Programador de tareas de WindowsEnviar correos electrónicos automatizados Uso SendEmail & Programador de tareas de WindowsNo importa cuál es su trabajo, por lo general todos en algún momento tiene que enviar por correo electrónico un jefe o supervisor con informes de estado diarios, semanales o mensuales.Lee mas
Estos son ideales para esos momentos en los que tiene una secuencia de comandos que está monitorizar la salud de un ordenador o el estado de un proceso específico, pero lo que si desea automatizar el envío de mensajes de correo electrónico desde dentro de los productos de Office como Word o Excel?
Hay muchas razones por las que es posible que desee hacerlo. Tal vez usted tiene el personal que actualizar los documentos u hojas de cálculo sobre una base semanal, y desea recibir una notificación por correo electrónico cuando esos cambios se llevan a cabo, e incluso un informe de los datos desde dentro de esas hojas. Hay algunas técnicas que puede utilizar para programar correos electrónicos automatizados desde dentro de Excel, pero mi favorito sigue siendo CDO.
Envío de correos electrónicos desde Excel
Probablemente esté pensando que secuencias de comandos de correo electrónico saliente en una secuencia de comandos de Excel VBA va a ser dolorosamente complicado. Bueno, eso no es el caso en absoluto.
CDO es un componente de mensajería utilizado en Windows para algunas generaciones del sistema operativo. Lo que solía ser llamado CDONTS, y luego con la llegada de Windows 2000 y XP, se sustituyó por “CDO para Windows 2000”. Este componente ya está incluido en la instalación de VBA dentro de Word o Excel y está listo para su uso.
Vídeo: Enviar e-mail desde Excel (sin salir de él)
Utilización del componente hace que el envío de mensajes de correo electrónico desde dentro de los productos de Windows con VBA extremadamente fácil. En este ejemplo, voy a utilizar el componente CDO en Excel para enviar un correo electrónico que va a entregar los resultados de una celda específica de Excel.
El primer paso es ir a la “Desarrollador”Pestaña del menú, haga clic en“Insertar”En la caja de controles, y luego seleccione un botón de comando. Dibuje en la hoja y luego crear una nueva macro para ello.
Cuando Excel abre el editor de VBA, vas a tener que agregar la referencia a la biblioteca CDO. Puede acceder a este en el menú Herramientas, y luego desplazarse por la lista hasta que encuentre “Microsoft CDO para la biblioteca de Windows 2000“. Seleccione la casilla de verificación y haga clic en OK.
Ahora ya está listo para utilizar CDO para emitir mensajes de correo electrónico desde dentro de Excel. Para ello, primero debe crear los objetos OT electrónico y configurar todos los campos que serán necesarios para el envío del correo electrónico. Tenga en cuenta que, si bien muchos de los campos son opcionales, los campos De y A son obligatorios.
Dim CDO_Mail Como ObjectDim CDO_Config Como ObjectDim SMTP_Config Como VariantDim strSubject como StringDim strFrom como StringDim strTo como StringDim strCc como StringDim strBcc como StringDim strBody Como StringstrSubject = "Los resultados de hoja de cálculo Excel"strFrom = "[email protected]"strTo = "[email protected]"strCc = ""strBcc = ""strBody = "Los resultados totales para este trimestre son: " & Str (Sheet1.Cells (2, 1))
Lo bueno de esto es que un construir cualquier cadena que desea personalizar un mensaje de correo electrónico completa y asignarlo a la variable strBody. Juntar componentes del mensaje utilizando la “&”Cadena para insertar datos de cualquiera de las hojas de Excel a la derecha en el mensaje de correo electrónico, al igual que yo he mostrado anteriormente.
La siguiente sección de código es donde configurará CDO para utilizar cualquier servidor SMTP externo que desea utilizar. En este caso no necesito para utilizar SSL porque mi servidor SMTP no lo requiere. CDO es capaz de SSL, pero que está fuera del alcance de este artículo. Si es necesario utilizar SSL, le recomiendo writeup impresionante de Paul Sadowski sobre el uso de CDO.
Establecer CDO_Mail = CreateObject ("CDO.Message") On Error GoTo Error_HandlingSet CDO_Config = CreateObject ("CDO.Configuration") CDO_Config.Load -1Set SMTP_Config = CDO_Config.FieldsWith SMTP_Config.Item ("https://schemas.microsoft.com/cdo/configuration/sendusing") = 2.Item ("https://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.metrocast.net".Ít("https://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25.UpdateEnd conCon CDO_MailSet .Configuration = CDO_ConfigEnd Con
Ahora que ha configurado la conexión con el servidor SMTP para enviar el correo electrónico, todo lo que tiene que hacer es rellenar los campos apropiados para el objeto CDO_Mail, y emita el comando Enviar. Así es como se hace eso.
CDO_Mail.Subject = = strSubjectCDO_Mail.From strFromCDO_Mail.To = = strToCDO_Mail.TextBody strBodyCDO_Mail.CC = = strCcCDO_Mail.BCC strBccCDO_Mail.SendError_Handling: Si Err.Description lt; gt; - Entonces MsgBox Err.Description
Así que ahí lo tienen. No habrá ninguna cajas o los mensajes de alerta de seguridad emergente, lo que puede suceder cuando se recurre a la utilización del objeto de correo de Outlook. CDO simplemente pone juntos el correo electrónico y utiliza su conexión con el servidor SMTP detalles de disparar el mensaje. Es probablemente la manera más fácil que conozco para incorporar correo electrónico en las secuencias de comandos de Word o Excel VBA.
Esto es lo que el mensaje parecía que he recibido en mi bandeja de entrada.
Vídeo: Enviar libro de Excel por correo mediante VBA
Sin problemas - sólo los datos directamente desde dentro de la hoja de Excel que se reparten directamente a mi cuenta de correo electrónico. Si eres creativo con la forma de poner juntos la variable de cadena cuerpo con todo tipo de datos de la hoja de Excel, se puede imaginar los informes de correo electrónico automatizados interesantes que usted podría poner juntos. Y si usted no desea utilizar un botón de comando, al igual que el script se ejecute en la hoja o la aplicación de evento close.
Se puede pensar en los usos interesantes para CDO en sus propios proyectos de Excel, Access o Word? Compartir sus pensamientos e ideas en la sección de comentarios.