Mmaresma/ noviembre 16, 2016/ Excel Avanzado, Macros

Comparto una macro para poder enviar correos electrónicos desde el propio Excel, sin necesidad de tener gestor de correo. Es más, en esta macro se envían los correos desde el propio Gmail.

Con unas modificaciones podemos incluso tener los contactos en filas y hacer un bucle para enviarlos uno a uno.

El código:

Public Function EnviarMails_CDO() As Boolean
On Error GoTo ErrEnviarMails_CDO

' Creo la variable de objeto CDO
Dim Email As CDO.Message

Dim Autentificion As Boolean

' ahora doy vida al objeto
Set Email = New CDO.Message

'indicamos los datos del servidor:
Email.Configuration.Fields(cdoSMTPServer) = "smtp.gmail.com"
Email.Configuration.Fields(cdoSendUsingMethod) = 2

'indicamos el nro de puerto. por defecto es el 25, pero gmail usa el 465.
Email.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = CLng(465)

'aqui dejamos en claro si el servidor que usamos requiere o nó autentificación.
'1=requiere, 0=no requiere. Para gmail, entonces, 1
Email.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = Abs(1)

'segundos para el tiempo maximo de espera. aconsejo no modificarlo:
Email.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = 30
'aqui defino como True (verdadera) a la autentificación para el envío de mails.
Autentificacion = True

'ahora configuramos las opciones de login de gmail:
If Autentificacion Then

'nombre de usuario
Email.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "tu_correo_de_@gmail.com"

'contraseña
Email.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "tu_contraseña"

'si el servidor utiliza SSL (secure socket layer). en gmail: True
Email.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True

End If

'a partir de ahora tomaremos los datos incluidos en el la hoja de excel:
' Dirección del Destinatario
Email.To = "el correo a quien se lo envias"

' Dirección del remitente
Email.From = "de_quien_se_envia"

' Asunto del mensaje
Email.Subject = "Asunto del Mensaje"

' Cuerpo del mensaje
Email.TextBody = "Correo enviado desde Excel sin Gestor de Correos."
'antes de enviar actualizamos los datos:
Email.Configuration.Fields.Update
'colocamos un capturador de errores, por las dudas:
On Error Resume Next
'enviamos el mail
Email.Send
'si el numero de error es 0 (o sea, no existieron errores en el proceso),
'hago que la función retorne Verdadero
If Err.Number = 0 Then EnviarMails_CDO = True

'destruyo el objeto, para liberar los recursos del sistema
If Not Email Is Nothing Then
Set Email = Nothing
End If

'libero posibles errores
On Error GoTo 0

Exit Function

ErrEnviarMails_CDO:
Exit Function

End Function

Y aquí el fichero de Ejemplo: verificador_correo

Espero que os sea útil, 🙂

Comentario

Comentario

Share this Post