Autor: Rainer Beckerbauer (Ramses)  --- Aus Excel VBA - Gruppe: Outlook & Excel

Outlook und Excel (6) Diagramme und Bereiche versenden

Autor: Rainer Beckerbauer (Ramses) - Erstellt: --      - Letzte Revision: --Gruppenthema: 6 Folgen 1 2 3 4 5 6 Sie sind in Folge:6
EXCEL-Diagramm im Body-Text senden

Diese beiden Makros senden das gerade gewählte Diagramm (eingebettet als Objekt in die Tabelle)
oder einen defineirten/variablen Bereich innerhalb eines Mail-Body's an einen definierten Empfänger.
Sollten Sie das Diagramm als eigenes Sheet innerhalb ihrer Mappe haben
bietet sich auch die Variante "Worksheet Senden" an.

Sub Send_Chart_from_Excel()
    'Geht nur ab Office 2000 und höher
    'Es geht nur wenn das Chart aktiviert und SELEKTIERT ist
    'Ohne Select geht es also nicht :-))
    'Den Namen des Diagrammes bitte anpassen
    ActiveSheet.ChartObjects("Diagramm 1").Activate
    ActiveChart.ChartArea.Select
    'Das anzeigen der Envelope Commandbar ist unabdingbar
    ActiveWorkbook.EnvelopeVisible = True
    'Nun werden die Adressen vergeben
    With ActiveSheet.MailEnvelope
        .Introduction = "Das ist der Einleitungstext." & vbCrLf & "mit einer zweiten Zeile"
        .Item.To = "irgendwer@irgendwo.de"
        .Item.Subject = "Das aktuelle Diagramm"
        .Item.Send
    End With
    ActiveWorkbook.EnvelopeVisible = False
End Sub





EXCEL-Bereich/-Range im Body-Text senden

Option Explicit

Sub Send_OriginalRange_from_Excel()
    'Geht nur ab Office 2000 und höher
    'Ohne Select geht es in diesem Fall nicht :-))
    Range("A1:C9").Select
    'Das anzeigen der Envelope Commandbar ist unabdingbar
    'Hier wird EXCEL selbst als "Mail-Client" verwendet.
    ActiveWorkbook.EnvelopeVisible = True
    'Nun werden die Adressen vergeben
    With ActiveSheet.MailEnvelope
        'Dies ist der Betreff
        .Item.Subject = "Die aktuellen Daten"
        'Dies ist der eigentlich "Body"-Text
        .Introduction = "Das ist der Einleitungstext." & vbCrLf & "mit einer zweiten Zeile"
        .Item.To = "irgendwer@irgendwo.de"
        .Item.Send
    End With
    ActiveWorkbook.EnvelopeVisible = False
End Sub


... oder den aktuell selektierten Bereich senden:

Option Explicit

Sub Send_OriginalRange_from_Excel()
    'Geht nur ab Office 2000 und höher
    'Ohne Select geht es in diesem Fall nicht :-))
    'Sendet den aktuell markierten Bereich
    With Selection
        'Das anzeigen der Envelope Commandbar ist unabdingbar
        'Hier wird EXCEL selbst als "Mail-Client" verwendet.
        ActiveWorkbook.EnvelopeVisible = True
        'Nun werden die Adressen vergeben
        With ActiveSheet.MailEnvelope
            'Der Betreff
            .Item.Subject = "Die aktuellen Daten"
            'Dies ist der eigentliche "Body"-Text
            .Introduction = "Das ist der Einleitungstext." & vbCrLf & "mit einer zweiten Zeile"
            .Item.To = "irgendwer@irgendwo.de"
            .Item.Send
        End With
    End With
    ActiveWorkbook.EnvelopeVisible = False
End Sub


Eine Alternative, wäre über die Zwischenablage (Clipboard).
Diese Version sollte auch mit Outlook 97/98 funktionieren


Sub Excel_VarRange_via_Outlook_Senden_Sinlge_Receipient()
    Dim MyOutApp As Object, MyMessage As Object
    Dim i As Long
    'Verweis auf "Microsoft Forms 2.0 Object Library" (..\system32\FM20.DLL) aktivieren !!
    'sonst geht es nicht
    'Dataobject wird gebraucht wegen der Zwischenablage
    Dim MyClpObj As DataObject
    Set MyClpObj = New DataObject
    Set MyOutApp = CreateObject("Outlook.Application")
    Set MyMessage = OutApp.CreateItem(0)
    'Der aktuelle selektierte Bereich
    'wird in die Zwischenablage kopiert
    Selection.Copy
    '---- Alternativ aktivieren
    'Excelbereich der versendet werden soll
    'Range("A1:A5").Copy
    With MyMessage
        .Subject = Range("A1") '"Betreffzeile Header"
        'Zwischenablage wird eingefügt
        ClpObj.GetFromClipboard
        .Body = ClpObj.GetText(1)
        .To = "irgendwer@irgendein-provider.de"
        'Hier wird die Mail angezeigt
        '.Display
        'Hier wird die Mail gleich in den Postausgang gelegt
        .Send
    End With
    'Objectvariablen aus dem Speicher entfernen
    Set MyOutApp = Nothing
    Set MyMessage = Nothing
End Sub




Weitere Artikel der Gruppe: Outlook & Excel Aus Excel VBA
Nach oben