Autor: Rainer Beckerbauer (Ramses) --- Aus Excel VBA - Gruppe:
Outlook & ExcelOutlook 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