Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1192to1196
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Mail aus Excel senden mit Tabelle

Mail aus Excel senden mit Tabelle
Universal
Guten Morgen liebe VBA-Könige,
ich komm einfach nicht weiter. Hab schon viel probiert und gegooglet, aber irgendwie finde ich ncihts passendes ... :-/
Folgendes Problem: Ich habe eine Tabelle, die per Makro aufgebaut wird. Diese Tabelle möchte ich gern per Mail verschicken. Allerdings soll sie nicht im Anhang verschickt, sondern im "Mail-Body" eingefügt werden. (Als ob man die Tabelle in Excel kopiert und in eine leere Mail eingefügt hätte)
Im Prinzip entspricht die "ActiveWorkbook.SendMail"-Methode genau meinen Anforderungen, jedoch kann ich in dem Fall den Absender (SentOnBehalfOfName) nicht definieren.
Ist mein Wunsch programmiertechnisch überhaupt möglich?
Ich danke euch vielmal!!!
viele Grüße
Uni
Mein Code für den Mail-Versand:
Sub Mail_senden()
Dim olApplication As Object
Dim objEMail As Object
Set olApplication = CreateObject("Outlook.Application")
Set objEMail = olApplication.CreateItem(olMailItem)
With objEMail
.SentOnBehalfOfName = "Absender"
.To = "Empfänger"
.Subject = "Test"
.Body = 'hier sollte meine Tabelle eingefügt werden
.Display 'für Testzwecke aktiv
End With
End Sub

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Mail aus Excel senden mit Tabelle
15.01.2011 08:42:08
Kasimir
Hallo Uni,
das kann man mit z.B. nachfolgender Funktion und Makro realisieren, die in ein Standardmodul müssen:
Function RangetoHTML(rng As Range)
Dim Fso As Object
Dim ts As Object
Dim TempFile As String
Dim TempWB As Workbook
TempFile = Environ$("temp") & "/" & Format(Now, "dd-mm-yy h-mm-ss") & ".htm"
rng.Copy
Set TempWB = Workbooks.Add(1)
With TempWB.Sheets(1)
.Cells(1).PasteSpecial Paste:=8
.Cells(1).PasteSpecial xlPasteValues, , False, False
.Cells(1).PasteSpecial xlPasteFormats, , False, False
.Cells(1).Select
Application.CutCopyMode = False
On Error GoTo 0
End With
With TempWB.PublishObjects.Add( _
SourceType:=xlSourceRange, _
Filename:=TempFile, _
Sheet:=TempWB.Sheets(1).Name, _
Source:=TempWB.Sheets(1).UsedRange.Address, _
HtmlType:=xlHtmlStatic)
.Publish (True)
End With
Set Fso = CreateObject("Scripting.FileSystemObject")
Set ts = Fso.GetFile(TempFile).OpenAsTextStream(1, -2)
RangetoHTML = ts.ReadAll
ts.Close
RangetoHTML = Replace(RangetoHTML, "align=center x:publishsource=", _
"align=left x:publishsource=")
TempWB.Close savechanges:=False
Kill TempFile
Set ts = Nothing
Set Fso = Nothing
Set TempWB = Nothing
End Function

Sub MailBodyDialog()
Dim rng As Range
Dim olapp As Object
Set olapp = CreateObject("Outlook.Application.14")
With olapp.CreateItem(0)
Set rng = Sheets("Dein Blattname").Range("Dein Bereich")
.SentOnBehalfOfName = "Absender"
.To = "Empfänger"
.Subject = "Test"
.HTMLBody = RangetoHTML(rng)
.Display
End With
Set rng = Nothing
Set olapp = Nothing
End Sub
Du musst in der Zeile "Set olapp = CreateObject("Outlook.Application.14")" die Zahl 14 gegen Deine Excelversionsnummer austauschen und in Zeile "Set rng = Sheets("Dein Blattname").Range("Dein Bereich")" Deinen Blattnamen und den einzufügenden Bereich angeben.
Die Funktion und das Makro stammt übrigends von der Quelle http://www.office2007-hilfe.de/tutorials-office/word-und-excel-2000-bis-2007-als-emailanhang-t4453.html
Viel Spaß damit,
Kasimir
Anzeige
AW: Mail aus Excel senden mit Tabelle
15.01.2011 11:07:22
Universal
Hi Kasimir,
cool und danke für die schnelle Antwort. Ich musste noch ein klein wenig am Code was ändern ... der böse Fehlerteufel hatte sich eingeschlichen. ;-)
Vielen vielen Dank und ein schönes Wochenende!
Hier der geänderte Code:
Function RangetoHTML(rng As Range)
Dim Fso As Object
Dim ts As Object
Dim TempFile As String
Dim TempWB As Workbook
TempFile = Environ$("temp") & "\" & Format(Now, "dd-mm-yy h-mm-ss") & ".htm"
rng.Copy
Set TempWB = Workbooks.Add(1)
With TempWB.Sheets(1)
.Cells(1).PasteSpecial Paste:=8
.Cells(1).PasteSpecial xlPasteValues, , False, False
.Cells(1).PasteSpecial xlPasteFormats, , False, False
.Cells(1).Select
Application.CutCopyMode = False
On Error GoTo 0
End With
With TempWB.PublishObjects.Add(SourceType:=xlSourceRange, Filename:=TempFile, Sheet:=TempWB. _
Sheets(1).Name, Source:=TempWB.Sheets(1).UsedRange.Address, HtmlType:=xlHtmlStatic)
.Publish (True)
End With
Set Fso = CreateObject("Scripting.FileSystemObject")
Set ts = Fso.GetFile(TempFile).OpenAsTextStream(1, -2)
RangetoHTML = ts.ReadAll
ts.Close
RangetoHTML = Replace(RangetoHTML, "align=center x:publishsource=", "align=left x:publishsource= _
")
TempWB.Close savechanges:=False
Kill TempFile
Set ts = Nothing
Set Fso = Nothing
Set TempWB = Nothing
End Function

Sub Mail_senden()
Dim rng As Range
Dim olApplication As Object
Dim objEMail As Object
Set olApplication = CreateObject("Outlook.Application")
Set objEMail = olApplication.CreateItem(olMailItem)
With objEMail
Set rng = Sheets(" Tabellenblat-Name ").Range(" Bereich für Mail ")
.SentOnBehalfOfName = "Absender"
.To = "Empfänger"
.Subject = ""
.HTMLBody = RangetoHTML(rng)
.Send
End With
Set rng = Nothing
Set objEMail = Nothing
End Sub

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige