Microsoft Excel

Herbers Excel/VBA-Archiv

Tabellen-Bereich in E-Mail einfügen

Betrifft: Tabellen-Bereich in E-Mail einfügen von: Stefan Wenninger
Geschrieben am: 07.11.2007 19:35:13

Einen schönen Abend allerseits,

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

  

Betrifft: AW: Tabellen-Bereich in E-Mail einfügen von: Tino
Geschrieben am: 07.11.2007 22:18:32

Hallo,
Application.SendKeys "^(v)" kannst du die Tasten-Kombination schicken.

Nachteil du musst dich vor dem senden dieser Tastatur-Kombination im Body der Mail befinden!

Habe auch nach einer Alternative gesucht, bin auch nicht fündig geworden.

Gruss
Tino


  

Betrifft: AW: Tabellen-Bereich in E-Mail einfügen von: Stefan
Geschrieben am: 08.11.2007 07:41:04

Vielen Dank Tino,

das ist schon mal ein guter Hinweis und ich werde das weiterverfolgen.

Wenn ich auf eine Lösung stoße, werde ich sie hier bekannt geben

lG Stefan


  

Betrifft: AW: Tabellen-Bereich in E-Mail einfügen von: Stefan Wenninger
Geschrieben am: 08.11.2007 11:44:35

So - und hier nun noch die Lösung, die endlich klappt

Sub BEREICHMAILEN()

    Dim OutApp As Object, Mail As Object, i
    Dim Nachricht

' nachfolgend den gewünschten Tabellenbereich einstellen
    Range("C47:G102").Select
    Selection.Copy

' Öffnen der Mail
        Set OutApp = CreateObject("Outlook.Application")
        Set Nachricht = OutApp.CreateItem(0)
        With Nachricht
            .Subject = "Betrefftext"
            .To = "Email@dresse.de"
            .Display
        End With
        Set OutApp = Nothing
        Set Nachricht = Nothing

'Kurz warten, damit die Mail Zeit zum Öffnen hat
        Application.Wait (Now + TimeValue("0:00:05"))

' Dann die Zwischenablage einfügen
        Application.SendKeys ("%bi") ' im Menü BEARBEITEN (Alt-B) das e-I-nfügen wählen
        'Application.SendKeys ("^v") ' Strg-V Anweisung ist die 2.Möglichkeit statt Alt-B + I
        
End Sub