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

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.
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?
- Compartir respuesta
