Como cambiar esta macro para que envíe el archivo en pdf.

hoja = "OC"
    correo = "xxxxxxxxxxxxx"
    passwd = "xxxxxxxxx"
    '
    Application.DisplayAlerts = False
    Application.ScreenUpdating = False
    Ruta = ThisWorkbook.Path & "\"
    nombre = Sheets(hoja).Name
    Sheets(hoja).Copy
    ActiveWorkbook.SaveAs Filename:=Ruta & nombre & ".xlsx"
    ActiveWorkbook.Close 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 = "xxxxxxxxxxx"
        .From = "xxxxxxxxxxxxxxxx"
        .Subject = "OC"
        '.TextBody = "revisar neonico y estructuración"
        .AddAttachment Ruta & nombre & ".xlsx"
        .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

1 respuesta

Respuesta
2

H o l a:

Quedaría así para enviar la hoja "OC" como PDF:

Sub Enviar()
    hoja = "OC"
    correo = "xxxxxxxxxxxxx"
    passwd = "xxxxxxxxx"
    '
    Application.DisplayAlerts = False
    Application.ScreenUpdating = False
    ruta = ThisWorkbook.Path & "\"
    nombre = Sheets(hoja).Name
    'Sheets(hoja).Copy
    'ActiveWorkbook.SaveAs Filename:=Ruta & nombre & ".xlsx"
    'ActiveWorkbook.Close False
    Sheets(hoja).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 = "xxxxxxxxxxx"
        .From = "xxxxxxxxxxxxxxxx"
        .Subject = "OC"
        '.TextBody = "revisar neonico y estructuración"
        .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

':)
':)

No me sirvió 100%, lo que pasa es que crea un xls y el pdf se envía pero en blanco.

Estas líneas de la macro son para crear el xls, pero ya quité las líneas, no sé entonces cómo es que te genera el xls

Sheets(hoja). Copy
    'ActiveWorkbook.SaveAs Filename:=Ruta & nombre & ".xlsx"
    'ActiveWorkbook. Close False

Revisa que en la hoja "oc" tengas información esa es la hoja que se está enviando al pdf

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas