¿Cómo grear una macro en excel que guarde una hoja en pdf y después se envíe por correo?

Espero me puedan ayudar ...!

Necesito crear una macro que realice lo siguiente

1.- Guardar el archivo de la hoja activa en PDF con el nombre de 2 celdas y la fecha tomada de una celda aplicando formato de dd-mm-aaaa

2.-Enviar por correo tomando la dirección de destino escrita en una celda

3.- Que tome como cuerpo de mensaje una celda

4. Que anexe el archivo guardado en pdf.

5.-Que ponga en asunto el nombre del archivo guardado en pdf. Al igual en el cuerpo del mensaje

Hasta ahorita tengo la siguiente macro

Sub Guardar_correoPDF()
'
' GuardarPDF Macro
'
ru = "C:\Users\Servicio Flama\Desktop\COTIZACIONES\Cotizaciones\"
'
 Dim Dest As String
 Dim nombredearchivo As String
 Dest = Cells(20, "J")
 nombredearchivo = Range("M10") & Range("Y10")
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _
    Filename:=ru & Range("M10") & Range("y10") & "  " & Format(Range("AR10"), "dd-mm-yyyy") & ".pdf", _
    Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
        OpenAfterPublish:=True_
 Dim objOutlook As Object
   Dim objMail As Object
   Dim objOutlookAttach As Object
   Set objOutlook = CreateObject("Outlook.Application")
      Set objMail = objOutlook.CreateItem(olMailItem)
   Set objOutlookAttach = objOutlook.CreateItem(olAttachMents)
      With objMail
         'A quien va dirigido el correo
         .To = Dest
         .CC = ""
         .BCC = ""
         .Subject = "Envío Cotizacion" & nombredearchivo
         .Body = "Estimado Señor (a), en el presente  correo adjunto el archivo de la cotizacion " & nombredearchivo & " favor de confirmar recepción"
         .Attachments.Add ru & nombredearchivo & ".pdf"
         .Send
      End With
   'Se cierran todos los objetos utilizados
   Set objMail = Nothing
   Set objOutlook = Nothing
End Sub
 

1 Respuesta

Respuesta
1

H o l a: Te anexo la macro con algunos ajustes:

Sub Guardar_correoPDF()
'
' GuardarPDF Macro
'
    Dim dest As String, arch As String, ruta As String
    Dim objOutlook As Object
    Dim objMail As Object
    '
    ruta = "C:\Users\Servicio Flama\Desktop\COTIZACIONES\Cotizaciones\"
    ruta = "C:\trabajo\!"
    arch = Range("M10") & " " & Range("Y10") & " " & Format(Range("AR10"), "dd-mm-yyyy") & ".pdf"     'nombre archivo
    dest = Range("J20")     'Celda del destinatario
    cuer = Range("J21")     'Celda del cuerpo
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _
        Filename:=ruta & arch, Quality:=xlQualityStandard, _
        IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
    '
    Set objOutlook = CreateObject("Outlook.Application")
    Set objMail = objOutlook.CreateItem(olMailItem)
    With objMail
        .To = dest  'A quien va dirigido el correo
        .CC = ""
        .BCC = ""
        .Subject = "Envío Cotizacion " & arch
        .Body = cuer & " " & arch
        .Attachments.Add ruta & arch
        '.Display
        .Send
    End With
    'Se cierran todos los objetos utilizados
    Set objMail = Nothing
    Set objOutlook = Nothing
End Sub

Prueba y me comentas.

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

Buena tarde

Estimado Dante

De antemano gracias por tomarte el tiempo para ayudarme...

te comento que me marca el error en la seccion al realizar el pdf.

Saludos

Borra esta línea de la macro

ruta = "C:\trabajo\!"

También revisa en la siguiente línea de la macro, que la ruta donde se va a guardar el archivo sea la correcta:

ruta = "C:\Users\Servicio Flama\Desktop\COTIZACIONES\Cotizaciones\"

Prueba nuevamente y me comentas. Si funciona, no olvides cambiar la valoración a la respuesta. Sal u dos

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas