Enviar correo Gmail con macro

Tengo una macro que me crea un reporte en pdf y quiero que ese reporte me lo envíe a correo de gmail

¿Alguien podría ayudarme?

Intente hacerlo con un código parecido a enviarlo con outlook pero no me funcionó

1 respuesta

Respuesta
1

Te anexo un par de ejemplos.

En esta macro le dices cuál hoja quieres en PDF y en cuál celda está el nombre del archivo. La macro genera el pdf y lo nombra. Después lo envía por gmail.

Revisa también las indicaciones en este enlace:

Macro para enviar hoja excel por gmail

Sub EnviarHoja()
'Por.Dante Amor
    correo = "[email protected]"                 'correo de gmail
    passwd = "pwd"                              'pass de gmail
    hoja = "Hoja1"                              'Nombre de la hoja
    celda = "D9"                                'celda con el nombre de archivo
    '
    para = "[email protected]"                 'destinatario
    asunto = "Hoja de Entrega"                  'asunto del correo
    cuerpo = "Se anexa archivo"                 'cuerpo del correo
    '
    Set h1 = Sheets(hoja)
    ruta = ThisWorkbook.Path & "\"
    nombre = h1.Range(celda)
    If nombre = "" Then
        MsgBox "Falta el nombre de archivo"
        Exit Sub
    End If
    '
    h1.ExportAsFixedFormat Type:=xlTypePDF, _
        Filename:=ruta & nombre & ".pdf", _
        Quality:=xlQualityStandard, IncludeDocProperties:=True, _
        IgnorePrintAreas:=False, OpenAfterPublish:=False
    '
    Dim Email As CDO.Message
    Set Email = New CDO.Message
    Email.Configuration.Fields(cdoSMTPServer) = "smtp.gmail.com"
    Email.Configuration.Fields(cdoSendUsingMethod) = 2
    With Email.Configuration.Fields
        .Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = CLng(465)
        .Item("http://schemas.microsoft.com/cdo/" & "configuration/smtpauthenticate") = Abs(1)
        .Item("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = 30
        .Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = correo
        .Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = passwd
        .Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True
    End With
    With Email
        .To = para
        .From = correo
        .Subject = asunto
        .TextBody = cuerpo
        .AddAttachment ruta & nombre & ".pdf"
        .Configuration.Fields.Update
        On Error Resume Next
        .Send
    End With
    If Err.Number = 0 Then
        MsgBox "El mail se envió con éxito"
    Else
        MsgBox "Se produjo el siguiente error: " & Err.Number & " " & Err.Description
    End If
    Set Email = Nothing
End Sub

En el siguiente enlace el archivo pdf ya existe y el nombre lo toma de una celda.

Macro guarde en PDF y envié email (un archivo por celda, el email de cada archivo está en otra celda)


Avísame si necesitas ayuda para adecuar el código a tus necesidades.

.

'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

.

hola dante, gracias por tu respuesta quisiera saber si me podrías explicar un poco esta parte del código

Set h1 = Sheets(hoja)
ruta = ThisWorkbook.Path & "\"
nombre = h1.Range(celda)
If nombre = "" Then
MsgBox "Falta el nombre de archivo"
Exit Sub
End If

lo que entiendo es que genera una variable h1 la cual sera la hoja de donde quiero el pdf y en la ruta es donde me entra un poco de conflicto 

respecto al nombre pues seria que en mi hoja 1 el nombre es el que toma de la celda seleccionada y al ultimo una condición. Me ha salido error en esta parte y quisiera comprender para ver si puedo solucionarlo, también supongo que no me dejara hacer el pdf ya que la hoja esta protegida?

saludos y gracias

Isela r.

Te anexo unos comentarios

    hoja = "Hoja1"                              'Nombre de la hoja
    celda = "D9"                                'celda con el nombre de archivo
    '
    para = "[email protected]"                 'destinatario
    asunto = "Hoja de Entrega"                  'asunto del correo
    cuerpo = "Se anexa archivo"                 'cuerpo del correo
    '
'establece en el objeto h1 la hoja, previamente la variable hoja
'le puse el dato "Hoja1"
    Set h1 = Sheets(hoja)
    ruta = ThisWorkbook.Path & "\"
'en la variable nombre queda el dato de la variable celda, previamente
en la variable celda le puse el dato "D9"
    nombre = h1. Range(celda)

Qué mensaje de error te aparece y cuál línea se detiene la macro.

O explícame todo lo que necesitas y te creo todo el código.

este es el error simplemente me dirige ahí, básicamente es eso 

tengo un form que guarda datos, con esos datos se crean unas gráficas y son las que necesito enviar por correo desde la hoja de excel con un botón antes ya podía crear el pdf y enviar el correo solo que no adjunta el archivo ya que cuando recibo el correo me llega un adjunto llamado noname

Muchas gracias por el tiepo a responder mis dudas

¿Tienes una hoja que se llama "resumengrafico"?

Tienes que ponerlo entre comillas:

Set h1 = Sheets("resumengrafico")

Muchas gracias! 

Dante si quiero enviar el correo a varias personas tengo que ponerle un "c" & "b" o separarlo con comas?

De esta forma:

para = "[email protected][email protected][email protected]"

sal u dos

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas