Crear PDF enviar correo y guardar PDF

Básicamente lo que hace es enviar un correo de una hoja excel por correo

Necesito que después de crear el PDF lo guarde con el nombre que ha creaado con fecha y hora actual

En la carpeta D: Jose/factura

Sub Enviar_Correo_PDF()
 Sheets("PLANTILLA").Name = Sheets("PLANTILLA").Range("C7")
Dim olApp As Object
Dim olMail As Object
Dim RutaTemporal As String, NombreFicheroTemporal  As String, RutaCompleta As String
'deshabilitamos el refresco de pantalla
'y muy importante los eventos!
With Application
    .ScreenUpdating = False
    .EnableEvents = False
End With
'Definimos una variable que será la Ruta donde guardaremos,
'antes de enviar como adjunto, el pdf que generaremos...
RutaTemporal = Environ$("temp") & "\"
'Generamos el nombre del fichero temporal .Pdf
NombreFicheroTemporal = ActiveSheet.Name & ".pdf"
'Combinando las dos variables anteriores, tendremos la Ruta Completa de nuestro .pdf
RutaCompleta = RutaTemporal & NombreFicheroTemporal
'Depuramos posibles errores a la hora de Exportar
' a la ruta anterior, la hoja activa como PDF
On Error GoTo err
ActiveSheet.ExportAsFixedFormat _
        Type:=xlTypePDF, _
        Filename:=RutaCompleta, _
        Quality:=xlQualityStandard, _
        IncludeDocProperties:=True, _
        IgnorePrintAreas:=False, _
        OpenAfterPublish:=False
'LLega el momento de abrir la aplicación Outlook
Set olApp = CreateObject("Outlook.Application")
'y generar un nuevo email a enviar...
Set olMail = olApp.CreateItem(0)
Dim destinatario As String, Asunto As String, Cuerpo As String
'FALTA ASIGNAR VALORES A ESTAS VARIABLES!!!
On Error Resume Next
With olMail
    .To = destinatario          'añadimos el destinatario, el Para...
    '.CC = destinatario         'para adjuntar destinatario en Con Copia a...
    '.BCC = destinatario        'para adjuntar destinatario en Con Copia Oculta a...
    .Subject = Asunto        'indicaríamos el Asunto
    .Body = Cuerpo           'indicaríamos el Cuerpo del email
    'adjuntamos el fichero pdf desde la ruta donde la guardamos
    .Attachments.Add RutaCompleta
    .Display    'o bien usaremos .Send para enviar directamente...
    '.Send
End With
On Error GoTo 0
'Ya que el email ha sido enviado (o mostrado) con el pdf adjuntado
'podemos borrar el pdf que habíamos guardado (en la carpeta temporal)...
Kill RutaCompleta
'limpiamos las variables creadas.
Set olMail = Nothing
Set olApp = Nothing
'Reestablecemos las condiciones prevías
'refresco de pantalla y activamos loe eventos
With Application
    .ScreenUpdating = True
    .EnableEvents = True
End With
Exit Sub
'para el control de errores en caso de exportación como Pdf...
Err:
    MsgBox err.Description
End Sub

1 Respuesta

Respuesta
1

El nombre de archivo no puede llevar los caracteres / :

Por eso estoy poniendo el guión bajo.

Asegura que exista la carpeta: "D:\Jose\factura\"

Prueba lo siguiente.

Sub Enviar_Correo_PDF()
  Dim olApp As Object
  Dim olMail As Object
  Dim RutaTemporal As String, NombreFicheroTemporal  As String, RutaCompleta As String
  '
  'deshabilitamos el refresco de pantalla
  'y muy importante los eventos!
  With Application
      .ScreenUpdating = False
      .EnableEvents = False
  End With
  '
  Sheets("PLANTILLA").Name = Sheets("PLANTILLA").Range("C7")
  'Definimos una variable que será la Ruta donde guardaremos,
 'antes de enviar como adjunto, el pdf que generaremos...
  RutaTemporal = "D:\Jose\factura\"
  'Generamos el nombre del fichero temporal .Pdf
  NombreFicheroTemporal = ActiveSheet.Name & " " & Format(Now(), "dd_mm_yyyy hh_mm") & ".pdf"
  'Combinando las dos variables anteriores, tendremos la Ruta Completa de nuestro .pdf
  RutaCompleta = RutaTemporal & NombreFicheroTemporal
  'Depuramos posibles errores a la hora de Exportar
 ' a la ruta anterior, la hoja activa como PDF
  '
  On Error GoTo Err
  ActiveSheet.ExportAsFixedFormat _
          Type:=xlTypePDF, _
          Filename:=RutaCompleta, _
          Quality:=xlQualityStandard, _
          IncludeDocProperties:=True, _
          IgnorePrintAreas:=False, _
          OpenAfterPublish:=False
  'LLega el momento de abrir la aplicación Outlook
  Set olApp = CreateObject("Outlook.Application")
  'y generar un nuevo email a enviar...
  Set olMail = olApp.CreateItem(0)
  Dim destinatario As String, Asunto As String, Cuerpo As String
  'FALTA ASIGNAR VALORES A ESTAS VARIABLES!!!
  On Error Resume Next
  With olMail
      .To = destinatario          'añadimos el destinatario, el Para...
      '.CC = destinatario         'para adjuntar destinatario en Con Copia a...
      '.BCC = destinatario        'para adjuntar destinatario en Con Copia Oculta a...
      .Subject = Asunto        'indicaríamos el Asunto
      .Body = Cuerpo           'indicaríamos el Cuerpo del email
      'adjuntamos el fichero pdf desde la ruta donde la guardamos
      .Attachments.Add RutaCompleta
      .Display    'o bien usaremos .Send para enviar directamente...
      '.Send
  End With
  On Error GoTo 0
  'Ya que el email ha sido enviado (o mostrado) con el pdf adjuntado
 'podemos borrar el pdf que habíamos guardado (en la carpeta temporal)...
  'Kill RutaCompleta
  'limpiamos las variables creadas.
  Set olMail = Nothing
  Set olApp = Nothing
  'Reestablecemos las condiciones prevías
  'refresco de pantalla y activamos loe eventos
  With Application
      .ScreenUpdating = True
      .EnableEvents = True
  End With
  Exit Sub
  'para el control de errores en caso de exportación como Pdf...
Err:
      MsgBox Err.Description
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas