Guardar Pdf y enviar por Mail

Para Dante amor.

Buenos días, sabes que en esta consulta que me pasaste me esta dando un error. ¿Me podrás ayudar?

Guardar la en PDF y genere en un mail automático, pero me da un error en lo que te marque en negrita

Gracias por tu ayuda!

Sub GuardarPdf()

 Dim hojas()
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    ruta = "C:\Users\martinb\Desktop\SPM\"
     n = -1
    For Each h In Sheets
        If h.[G4] <> "" Then
            n = n + 1
            ReDim Preserve hojas(n)
            hojas(n) = h.Name
            If nomb = "" Then
                nomb = [G4] & " " & Format(Range("G2"), "dd-mm-yyyy") + Format(Now, "(hh'mm)") & ".pdf"
            End If
        End If
    Next
    If n > -1 Then
        Sheets(hojas).Copy
        ActiveWorkbook.ExportAsFixedFormat Type:=xlTypePDF, Filename:=ruta & nomb, _
            Quality:=xlQualityStandard, IncludeDocProperties:=True, _
            IgnorePrintAreas:=False, OpenAfterPublish:=False
        ActiveWorkbook.Close False
        '
       Set dam = CreateObject("outlook.application").createitem(0)
    dam.To = "[email protected]"
    dam.Subject = arch
    dam.Body = "Poner aquí el texto del Cuerpo del mensaje"
    dam.Attachments.Add Ruta & arch & ".pdf"
    dam.Send 'El correo se envía en automático
    'dam.Display 'El correo se muestra
    MsgBox "Archivo PDF generado"
   End Sub

1 Respuesta

Respuesta
1

Te anexo la macro actualizada

La variable para el nombre de archivo es "nomb" y tenías "arch", además en la variable ya va la extensión ".pdf", ya no es necesario que la pongas en el attach

Sub GenerarPdf()
'Por.Dante Amor
    Dim hojas()
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    Ruta = "C:\Users\martinb\Desktop\SPM\"
    'Ruta = "C:\trabajo\"
    n = -1
    For Each h In Sheets
        If h.[G4] <> "" Then
            n = n + 1
            ReDim Preserve hojas(n)
            hojas(n) = h.Name
            If nomb = "" Then
                nomb = [G4] & " " & [B3] & Format(Range("G2"), "dd-mm-yyyy") + Format(Now, "(hh'mm)") & ".pdf"
            End If
        End If
    Next
    If n > -1 Then
        Sheets(hojas).Copy
        ActiveWorkbook.ExportAsFixedFormat Type:=xlTypePDF, Filename:=Ruta & nomb, _
            Quality:=xlQualityStandard, IncludeDocProperties:=True, _
            IgnorePrintAreas:=False, OpenAfterPublish:=False
        ActiveWorkbook.Close False
        '
        Set dam = CreateObject("outlook.application").createitem(0)
        dam.To = "[email protected]"
        dam.Subject = nomb
        dam.Body = "Poner aquí el texto del Cuerpo del mensaje"
        dam.Attachments.Add Ruta & nomb
        dam.Send 'El correo se envía en automático
        'dam.Display 'El correo se muestra
        '
        MsgBox "Archivo PDF generado"
    End If
End Sub
'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

Dante por que se agrega esto a la consulta?

 'Ruta = "C:\trabajo\"

Lo dejo??

Gracias

Las líneas en la macro que tienen un apostrofe, significa que esa línea es un comentario, entonces la macro no la considera.

 'Ruta = "C:\trabajo\"

Puedes borrar la línea.

La utilizo para guardar los archivos, ya que no es práctico crear cada una de las carpetas que los usuarios utilizan, como en tu caso, tu carpeta es esta:

Ruta = "C:\Users\martinb\Desktop\SPM\"

Tendría que crear cientos de carpetas, de esa forma pongo todos los archivos de los usuarios en una sola carpeta.

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

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas