Macro en donde se mande un email y se adjunte un PDF cuya ruta (directorio) está escrito en una celda del excel

Al ejecutar la macro que incluye un envío por email, quiero que me adjunte también un pdf. Cuya ruta va cambiando según la fecha, y está escrito el directorio en una celda. ¿Sería eso posible?.

Respuesta

Esta función es para enviar por gmail, solo debes cambiar la ruta para adjuntar y listo... el correo gmal te pedirá que ajustes la seguridad o algo así no recuerdo, después del primer intento de envío te avisara gmail.

En mi caso yo hice un formulario y puse un listbox para poder envuiar varios pdf

Private Function Enviar_Mail_CDO(SerVidor_SMTP As String, _
                             Para As String, _
                             De As String, _
                             Asunto As String, _
                             Mensaje As String, _
                             Optional Path_Adjunto As String, _
                             Optional Puerto As String = "25", _
                             Optional Usuario As String, _
                             Optional Password As String, _
                             Optional Usar_Autentificacion As Boolean = True, _
                             Optional Usar_SSL As Boolean = True) As Boolean
      Dim i As Integer
    'Me.MousePointer = vbHourglass
    ' Variable de objeto Cdo.Message
    Dim Obj_Email As CDO.Message
    ' Crea un Nuevo objeto CDO.Message
    Set Obj_Email = New CDO.Message
    ' Indica el servidor Smtp para poder enviar el Mail ( puede ser el nombre _
      del servidor o su dirección IP )
    Obj_Email.Configuration.Fields(cdoSMTPServer) = SerVidor_SMTP
    Obj_Email.Configuration.Fields(cdoSendUsingMethod) = 2
    ' Puerto. Por defecto se usa el puerto 25, en el caso de Gmail se usan los puertos _
      465 o  el puerto 587 ( este último me dio error )
    Obj_Email.Configuration.Fields.Item _
        ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = CLng(Puerto)
    ' Indica el tipo de autentificación con el servidor de correo _
     El valor 0 no requiere autentificarse, el valor 1 es con autentificación
    Obj_Email.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/" & _
                "configuration/smtpauthenticate") = Abs(Usar_Autentificacion)
        ' Tiempo máximo de espera en segundos para la conexión
    Obj_Email.Configuration.Fields.Item _
        ("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = 30
    ' Configura las opciones para el login en el SMTP
    If Usar_Autentificacion Then
    ' Id de usuario del servidor Smtp ( en el caso de gmail, debe ser la dirección de correro _
     mas el @gmail.com )
    Obj_Email.Configuration.Fields.Item _
        ("http://schemas.microsoft.com/cdo/configuration/sendusername") = Usuario ' tu correo electronico
    ' Password de la cuenta
    Obj_Email.Configuration.Fields.Item _
        ("http://schemas.microsoft.com/cdo/configuration/sendpassword") = Password 'tu contraseña
    ' Indica si se usa SSL para el envío. En el caso de Gmail requiere que esté en True
    Obj_Email.Configuration.Fields.Item _
        ("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = Usar_SSL
    End If
    ' *********************************************************************************
    ' Estructura del mail
    '**********************************************************************************
    ' Dirección del Destinatario
    Obj_Email.To = Para
    ' Dirección del remitente
    Obj_Email.From = De
    ' Asunto del mensaje
    Obj_Email.Subject = Asunto
    ' Cuerpo del mensaje
    Obj_Email.TextBody = Mensaje
    'Ruta del archivo adjunto
    For i = 0 To ListBox1.ListCount - 1
    If Path_Adjunto <> vbNullString Then
        Obj_Email.AddAttachment ListBox1.List(i, 0) 'esta linea la cambias por tu pdf
    End If
    Next i
    ' Actualiza los datos antes de enviar
    Obj_Email.Configuration.Fields.Update
    On Error Resume Next
    ' Envía el email
    Obj_Email.Send
    If Err.Number = 0 Then
       Enviar_Mail_CDO = True
    Else
       MsgBox Err.Description, vbCritical, " Error al enviar el email "
    End If
    ' Descarga la referencia
    If Not Obj_Email Is Nothing Then
        Set Obj_Email = Nothing
    End If
    On Error GoTo 0
    Me.MousePointer = vbNormal
End Function

para que llames la funcion, cree varios txt en un formulario cualquier duda avisas

Dim ret As Boolean
    ' Asegurarse de pasar bien los últimos dos parámetros _
     ( Si usa login y si el server usa SSL)
    ret = Enviar_Mail_CDO(txt_Servidor, _
                          txt_Para, _
                          txt_De, _
                          txt_Asunto, _
                          txt_Mensaje, _
                          ListBox1.ListIndex, _
                          txt_Puerto, _
                          txt_Usuario, _
                          txt_Password, _
                          True, _
                          True)
    ' Si devuelve true es por que no hubo errores en el envio
    If ret Then
        MsgBox " .. Maneje enviado ", vbInformation
    End If
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas