Microsoft Excel

Herbers Excel/VBA-Archiv

Blatt als PDF versenden

Betrifft: Blatt als PDF versenden von: Blume
Geschrieben am: 03.09.2020 12:57:07

Hallo,


eine Frage, ich habe einen Code um ein Blatt an eine Mail zu versenden. Aktuell kommen bei mir leider immer zwei Warnungen: Kompatibilität und Neu Berechnung, kann man die Hinweisfelder umgehen?

Sub Blatt versenden ()
 Dim Nachricht As Object, OutApp As Object
   Set OutApp = CreateObject("Outlook.Application")
   Dim AWS As String, wksMail As Worksheet
    
    Sheets("Infoblattversenden").Select
         
    Cells.Select
    Selection.Copy

    Workbooks.Add
    Range("A1").Select
    ActiveSheet.Paste
    Range("L28").Select
    Columns("J:J").EntireColumn.AutoFit
    Columns("K:K").EntireColumn.AutoFit
    ActiveWindow.ScrollColumn = 2
    ActiveWindow.ScrollColumn = 3
    Columns("L:L").EntireColumn.AutoFit
    Columns("O:O").EntireColumn.AutoFit
    ActiveWindow.ScrollColumn = 4

          Range("A1").Select
    
    Columns("P:P").Select
    Selection.NumberFormat = "m/d/yyyy"
    Range("A1").Select
   
   ActiveWorkbook.SaveAs Environ("UserProfile") & "\Desktop\" & Format(Date, "YYMMDD") & "_" &   _
_
Range("C6") & "_Test123" & ".xls", FileFormat:=xlExcel8

   Application.Visible = True
   
   Set Nachricht = OutApp.CreateItem(0)
   With Nachricht
     .To = Range("C18")
     .CC = ""
     .Subject = "Test123" & Date & " " & Time
     .Attachments.Add Environ("UserProfile") & "\Desktop\" & Format(Date, "YYMMDD") & "_" &  _
Range("C6") & "_Test123" & ".xls"
     .Body = "Liebes Team der " & Range("C6") & ",  anbei erhalten Sie das Informationsblatt.   _
_
Viele Grüße" & Range("B3") & vbCrLf & ""
     .Send
   End With
   Set OutApp = Nothing
   Set Nachricht = Nothing
   
   ActiveWorkbook.Close
   Kill Environ("UserProfile") & "\Desktop\" & Format(Date, "YYMMDD") & "_" & Range("C6") & " _
_Test123" & ".xls"
End Sub
Würde es vielleicht auch gehen, dass man das Worksheet als PDF im richtigen Druckberreich (A1:H20) versendet?


Schöne Grüße

Betrifft: AW: Blatt als PDF versenden
von: mumpel
Geschrieben am: 05.09.2020 09:48:40

Hallo!

Stichwort: Application.DisplayAlerts

Aber weshalb xls? Nimm einfach xlsx oder xlsm. Dann brauchst DU Dich auch nicht um Fehlermeldungen kümmern.

Was das PDF betrifft, da kannst Du Dich an printout orientieren ActiveSheet.Range("A1:H20").ExportAsFixedFormat

Betrifft: AW: Blatt als PDF versenden
von: fcs
Geschrieben am: 05.09.2020 10:35:30

Hallo Blume,

ich hab dein Makro mal etwas aufgeräumt und Zeilen ergänzt, die die Meldungen unterdrücken sollten (ungetestet)

Zusätzlich eine Variante, die ein PDF des vorgegebenen Zellbereichs erstellt.

LG
Franz
Sub Blatt_versenden()
 Dim Nachricht As Object, OutApp As Object
   Set OutApp = CreateObject("Outlook.Application")
   Dim AWS As String, wksMail As Worksheet
    
    Sheets("Infoblattversenden").Select
         
    Cells.Select
    Selection.Copy

    Workbooks.Add
    Range("A1").Select
    ActiveSheet.Paste
    Columns("J:L").EntireColumn.AutoFit
    Columns("O:O").EntireColumn.AutoFit

    Range("A1").Select
    
    Columns("P:P").NumberFormat = "m/d/yyyy"
    Range("A1").Select
    
   AWS = Environ("UserProfile") & "\Desktop\" & Format(Date, "YYMMDD") & "_" _
      & Range("C6") & "_Test123" & ".xls"
   Application.DisplayAlerts = False
   Application.Calculate
   ActiveWorkbook.SaveAs AWS, FileFormat:=xlExcel8
   Application.DisplayAlerts = True

   Application.Visible = True
   
   Set Nachricht = OutApp.CreateItem(0)
   With Nachricht
     .To = Range("C18")
     .CC = ""
     .Subject = "Test123" & Date & " " & Time
     .Attachments.Add AWS
     .Body = "Liebes Team der " & Range("C6") & _
        ",  anbei erhalten Sie das Informationsblatt. Viele Grüße" & Range("B3") & vbCrLf & ""
     .Send
   End With
   Set OutApp = Nothing
   Set Nachricht = Nothing
   
   ActiveWorkbook.Close
   Kill AWS
End Sub


Sub Blatt_versenden_PDF()
   Dim Nachricht As Object, OutApp As Object
   Set OutApp = CreateObject("Outlook.Application")
   
   Dim AWS As String, wksMail As Worksheet
   Dim print_Range_old As String
    
   Set wksMail = ActiveWorkbook.Sheets("Infoblattversenden")
   With wksMail
      .Range("A1").Select
      AWS = Environ("UserProfile") & "\Desktop\" & Format(Date, "YYMMDD") & "_" _
          & .Range("C6") & "_Test123" & ".PDF"
      print_Range_old = .PageSetup.PrintArea
      .PageSetup.PrintArea = "$A$1:$H$20"
      .ExportAsFixedFormat Type:=xlTypePDF, Filename:=AWS, Quality:=xlQualityStandard, _
          Ignoreprintareas:=False
      .PageSetup.PrintArea = print_Range_old
   End With
   
   Application.Visible = True
   
   Exit Sub
   Set Nachricht = OutApp.CreateItem(0)
   With Nachricht
     .To = Range("C18")
     .CC = ""
     .Subject = "Test123" & Date & " " & Time
     .Attachments.Add AWS
     .Body = "Liebes Team der " & Range("C6") & _
        ",  anbei erhalten Sie das Informationsblatt. Viele Grüße" & Range("B3") & vbCrLf & ""
     .Send
   End With
   
   Kill AWS
   
   Set OutApp = Nothing
   Set Nachricht = Nothing
   
End Sub


Beiträge aus dem Excel-Forum zum Thema "Blatt als PDF versenden"