Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema ListBox
BildScreenshot zu ListBox ListBox-Seite mit Beispielarbeitsmappe aufrufen

PDF mit Range aus Excel per Outlook verschicken

Betrifft: PDF mit Range aus Excel per Outlook verschicken von: Marco
Geschrieben am: 05.11.2012 12:50:37

Hallo zusammen,

sorry, bin grad am verzweifeln, weil ich nach langem Suchen keine Lösung im Netz finde und mit Rumprobieren ich auch nicht mehr weiterkomm.
Gibt es eine Möglichkeit aus Excel per Makro ein pdf zusammen mit einem ausgewählten Bereich zu versenden? Über die envelope-Anweisung kann ich (anscheinend) nur einen Excelbereich direkt aus Excel schicken (geht ein pdf-Anhang auch?).

Das pdf verschicke ich über folgenden Code (erfolgreich) - Textbereich geht zwar auch, allerdings ist das reiner Text und nicht formatiert, soll am Schluß aber eine Tabelle sein.

Wer kann mir weiterhelfen? Ideal wäre
1. entweder eine Möglichkeit der übersichtlichen Formatierung des Textanhangs/ Bereichs bzw. ein Befehl des "schöneren" Einfügens einer Range
2. oder eine Möglichkeit mit der envelope-Methode ein pdf anzuhängen

Vielen Dank für eure Hilfe!!!

Sub sendMail()
Dim mepdf, Änderungen As String
Dim MyOutApp As Object, MyMessage As Object
Dim verteiler As String
Dim signature As String
Dim myClpObj As DataObject
Set myClpObj = New DataObject

'Makro erstellt pdf direkt aus der Datei, hängt dieses an die Mail und öffnet es. Infos aus  _
Range werden als Text angehängt.

Sheets("xxx").Select

verteiler = Cells(1, 2)     'Mailadressen aus Zelle einlesen

    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
        ThisWorkbook.Path & "\FEK-Erprobungskalender.pdf", Quality:=xlQualityStandard _
        , IncludeDocProperties:=False, IgnorePrintAreas:=False, OpenAfterPublish _
        :=True

mepdf = ThisWorkbook.Path & "\Dateiname.pdf"

Set MyOutApp = CreateObject("Outlook.Application")
Set MyMessage = MyOutApp.CreateItem(0)
    With MyMessage
        .to = verteiler
        .Subject = "Text" & Date 'Betreffzeile
'hier wird zusätzlich der markierte Bereich eingefügt, allerdings unformatiert :-(
        myClpObj.GetFromClipboard        .Body = "text" & Chr(13) & Chr(13) & myClpObj.  _
_
GetText(1)        .Attachments.Add mepdf
        .Attachments.Add meIIpdf
        .Display
        '.Send
        'Kill mepdf
    End With
    Set MyOutApp = Nothing
    Set MyMessage = Nothing

End 
 


  

Betrifft: AW: PDF mit Range aus Excel per Outlook verschicken von: fcs
Geschrieben am: 05.11.2012 23:42:24

Hallo Marco,

2 PDF-Anhänge zu erzeugen ist möglich. siehe Code

Wenn du dir die Email vor dem Versand noch ansehen willst, dann kanst du auch den selektierten, kopierten Zellbereich als Tabelle oder Grafik im Body der E-Mail einfügen.

Meine Programmierkentnisse in VBA-Outlook reichen nicht aus, um die Zellinhalte automatisch per Makro in ansprechender Form in die Mail einzufügen. Falls du nicht automatisch die Mail direkt versendest, dann kann du den vom Makro kopierten Bereich manuell als Tabelle oder Grafik in der Mail einfügen.

Gruß
Franz

Sub sendMail()
  Dim mepdf As String, mepdf2 As String, Änderungen As String
  Dim rngPDF As Range
  Dim MyOutApp As Object, MyMessage As Object
  Dim verteiler As String
  Dim signature As String
  
'Makro erstellt pdf direkt aus der Datei, hängt dieses an die Mail und öffnet es. Infos aus _
Range werden als 2. PDF angehängt.

    Sheets("xxx").Select
    Set rngPDF = ActiveSheet.Range("A5:B12") 'Zellbereich für 2. PDF-Datei
    verteiler = Cells(1, 2)     'Mailadressen aus Zelle einlesen
    
    'Namen der beiden PDF-Dateien
    mepdf = ThisWorkbook.Path & "\FEK-Erprobungskalender" & Format(Now, " YYYY-MM-DD hhmmss") &  _
".pdf"
    mepdf2 = ThisWorkbook.Path & "\Bereich" & Format(Now, " YYYY-MM-DD hhmmss") & ".pdf"
    'gesamtes Blatt als PDF speichern
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _
        Filename:=mepdf, _
        Quality:=xlQualityStandard, IncludeDocProperties:=False, _
        IgnorePrintAreas:=False, OpenAfterPublish:=False
        
    'bestimmten Zellbereich als PDF speichern
    rngPDF.Select
    Selection.ExportAsFixedFormat Type:=xlTypePDF, Filename:=mepdf2, _
        Quality:=xlQualityStandard, IncludeDocProperties:=True, _
        IgnorePrintAreas:=False, OpenAfterPublish:=False

    Set MyOutApp = CreateObject("Outlook.Application")
    Set MyMessage = MyOutApp.CreateItem(0)
    
    signature = "Mit freundlichen Grüßen" & Chr(13) & Chr(13) & "Mein Name"
    
    With MyMessage
        .to = verteiler
        .Subject = "Text" & Format(Date, " YYYY-MM-DD") 'Betreffzeile
         
        .Body = "Bodytext" & Chr(13) & Chr(13) & signature
        .Attachments.Add mepdf
        .Attachments.Add mepdf2
        rngPDF.Copy
        MsgBox "Der Kopierte Zellbereich kann jetzt in Outlook eingefügt werden."
        .Display
        '.Send
        'Kill mepdf
        'Kill mepdf2
    End With
    Set MyOutApp = Nothing
    Set MyMessage = Nothing
End Sub



  

Betrifft: AW: PDF mit Range aus Excel per Outlook verschicken von: Marco
Geschrieben am: 06.11.2012 09:10:56

Hallo Franz,

vielen Dank für Deinen Tipp! Daran hab ich auch schon gedacht. Hätte aber ganz gern, dass der Bereich gleich lesbar in der Mail steht (Macht das ganze übersichtlicher un man muss das pdf nicht mit dem letzten vergleichen).

Manuell kopieren möchte ich weglassen, am Ende soll nur 2 mal Knopf drücken reichen um das Teil zu versenden.

Danke für die Hilfe!!!!

Hab jetzt eine andere Lösung mit envelope direkt aus Excel - liefert das gewünschte Ergebnis, man muss aber aufpassen, dass man in Excel keine anderen Bereiche selektiert...


Hier der (wesentlich kürzere) Code - vielleicht braucht das ja mal jemand...

Sub Mailversand()

Dim m As Integer

'Zunächst Abfrage, ob gespeichert werden soll
Nachricht = MsgBox("Datei speichern?", vbYesNoCancel)
If Nachricht = vbCancel Then Exit Sub
If Nachricht = vbNo Then ThisWorkbook.Close
If Nachricht = vbYes Then
ThisWorkbook.save
End If

Sheets("Vergleich").Select

m = 2
Do While Sheets("Vergleich").Cells(m, 10) <> ""
m = m + 1
Loop

ActiveSheet.Range(Cells(2, 10), Cells(m - 1, 14)).Select            'Selection: Der Bereich,  _
der sichtbar in der Mail stehen soll

ActiveWorkbook.EnvelopeVisible = True

With ActiveSheet.MailEnvelope
.Item.To = "Mailadresse"
'.Item.Cc = "xxx"
.Item.Subject = "Text " & Date
.Introduction = "Text" & Chr(13) & _
            "Folgende Änderungen wurden vorgenommen:" & Chr(13) & Chr(13)   'hier steht im  _
Anschluß der selektierte Bereich
.Item.Attachments.Add ThisWorkbook.Path & "\Dateiname.pdf"     '...und das PDF als Anhang
.Item.Display          'Vor Versand pdf nochmal anzeigen lassen

End With

End Sub



 

Beiträge aus den Excel-Beispielen zum Thema "PDF mit Range aus Excel per Outlook verschicken"