ich möchte einen Bereich der Tabelle kopieren und in einer neu zu öffnenden E-Mail einfügen.
Ein bekannte Aufgabe mit bereits sehr guten Lösungen.
Worin sich mein Wunsch von den bisherigen Lösungen unterscheidet ist das Folgende:
ich möchte, dass eine neue E-Mail aufgeht und der gewünschte Tabellenbereich dort eingefügt wird inklusive Formatierungen und Rahmenlinien - und dass die E-Mail noch zum Bearbeiten offen ist.
Beim nachfolgenden Programmcode, den ich gefunden habe, ist das Problem, dass man noch immer in Excel ist und noch keine echte, geöffnete E-Mail vor sich hat.
Sub Send_OriginalRange_from_Excel()
'Getestet unter Office XP
'Ohne Select geht es nicht :-))
Range("C47:C101").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 = "test@test.at"
.Item.Subject = "Die aktuellen Daten"
.Item.Display
End With
End Sub
Ich fand auch die folgende Lösung:
Sub Excel_Range_via_Outlook_Senden()
Dim OutApp As Object, Mail As Object, i
Dim Nachricht
'Verweis auf "Microsoft Forms 2.0 Object Library" aktivieren !!
'sonst geht es nicht
'Dataobject wird gebraucht wegen der Zwischenablage
Dim ClpObj As DataObject
Set ClpObj = New DataObject
Set OutApp = CreateObject("Outlook.Application")
Set Nachricht = OutApp.CreateItem(0)
'Excelbereich der versendet werden soll.
'Wenn kein Bereich versendet werden soll sondern
'der Bereich bereits kopiert wurde, können sie die
'nächsten beiden Zeilen auskommentieren
Range("C47:C101").Select
'Bereich wird in die Zwischenablage kopiert
Selection.Copy
With Nachricht
.Subject = "Betreffzeile Header"
'Zwischenablage wird eingefügt
ClpObj.GetFromClipboard
.Body = ClpObj.GetText(1)
.To = "sw8@gmx.at"
'Hier wird die Mail angezeigt
.Display
'Hier wird die Mail gleich in den Postausgang gelegt
'.Send
End With
Set OutApp = Nothing
Set Nachricht = Nothing
'Auf Outlook warten. Ist nicht schnell genug :-))
Application.Wait (Now + TimeValue("0:00:05"))
End Sub
Die ist schon sehr brauchbar, weil da wirklich eine eigenständige E-Mail aufgeht, in der der Text der Excel-Tabelle eingefügt wird. Aber bei dieser Prozedur wird der Text leider ohne Formatierung übernommen, die ich aber dringend benötige.
So bleibt mir zur Zeit als einzige Lösung, dass ich
- zuerst den gewünschten Bereich in die Zwischenablage kopiere
- dann mittels ShellExecute eine E-Mail aufmache
- und dort irgendwie die Zwischenablage einfüge
Leider weiß ich den letzten Schritt nicht - also wie ich zB die Tastenkombination "Strg-V" an die geöffnete E-Mail weitergeben kann.
Hat irgendjemand eine Idee ?
Vielen Dank im Vorhinein,
Stefan