Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

excel vba mail

Forumthread: excel vba mail

excel vba mail
14.12.2020 13:47:38
Vera
Hallo,
ich habe folgendes Problem:
Es soll in Ecxel2019 eine Outlook mail erstellt werden. Das funktioniert auch mit diesem Code (Teilauszug)
.to = Range ("B3")
.subject = Range ("B4")
.body = Range ("b2")
.display
Allerdings wird der optische Zeilenumbruch aus dem Feld B2 nicht in die email übernommen. Dort gibt es einen Fließtext am Stück :(
Meine Recherchen im Forum warum bisher erfolglos.
Könnt ihr mir helfen?
VG & Danke
Vera
Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: excel vba mail
14.12.2020 13:50:30
Werner
Hallo,
schon mal mit
.body = Range ("b2").Text

versucht? Habs aber nicht getestet.
Gruß Werner
AW: excel vba mail
14.12.2020 14:29:03
Beverly
Hi,
der "optische Zeilenumbruch" ergibt sich doch daraus, dass der Text in der Zelle breiter als die Spalte ist und du unter den Zelleigenschaften den Textumbruch eingestellt hast - oder? In dem Fall hat der Text keinen Zeilenumbruch sondern ist Fließtext.


Anzeige
AW: excel vba mail
14.12.2020 15:01:30
Vera
mit optischen Umbruch meine ich meinen WUNSCH des Umbruchs, den in in Excel mit ALT&ENTER in der Zelle erzeuge.
AW: excel vba mail
14.12.2020 15:41:54
Beverly
In dem Fall solltest du den Zellinhalt in HTML-Text umwandeln:
Sub MailSenden()
Dim objNachricht As Object
Dim objMail As Object
Dim rngBereich As Range
Dim strHTML As String
Set rngBereich = Range("B2")
Set objMail = CreateObject("Outlook.Application")
Set objNachricht = objMail.CreateItem(0)
With objNachricht
.to = Range("B3")
.Subject = Range("B4")
' HTML-Text erstellen
strHTML = RangetoHTML(rngBereich)
' HTML-Body eintragen
.HTMLBody = strHTML
.ReadReceiptRequested = False
' Mail anzeigen
.display
'.send
End With
Set objNachricht = Nothing
Set objMail = Nothing
Set rngBereich = Nothing
End Sub
Function RangetoHTML(rng As Range)
' Changed by Ron de Bruin 28-Oct-2006
' Working in Office 2000-2007
On Error Resume Next
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"
Set TempWB = Workbooks.Add(1)
TempFile = Environ$("temp") & "/" & Format(Now, "dd-mm-yy h-mm-ss") & ".htm"
Set TempWB = Workbooks.Add(1)
rng.Copy
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
' .DrawingObjects.Visible = True
'.DrawingObjects.Delete
On Error GoTo 0
End With
'Publish the sheet to a htm file
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
'Read all data from the htm file into RangetoHTML
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=")
'Close TempWB
TempWB.Close savechanges:=False
'Delete the htm file we used in this function
Kill TempFile
Set ts = Nothing
Set fso = Nothing
Set TempWB = Nothing
End Function


Anzeige
AW: excel vba mail
14.12.2020 15:34:35
Luschi
Hallo Vera,
bei mir klappt das so:

Sub EMail_erstellen()
Dim objOutlook As Object, objMail As Object, _
sBody As String
sBody = ActiveSheet.Range("B2").Value
sBody = Replace(sBody, Chr(10), "
", 1, -1, vbTextCompare) Set objOutlook = CreateObject("Outlook.Application") Set objMail = objOutlook.CreateItem(0) With objMail .To = "deinname@deinedomain.de" .Subject = "Betreff" .htmlBody = "Sehr geehrte Damen und Herren,
" & sBody .Display End With ''usw. Set objMail = Nothing Set objOutlook = Nothing End Sub
Gruß von Luschi
aus klein-Paris
Anzeige
AW: excel vba mail
14.12.2020 15:34:35
Luschi
Hallo Vera,
bei mir klappt das so:

Sub EMail_erstellen()
Dim objOutlook As Object, objMail As Object, _
sBody As String
sBody = ActiveSheet.Range("B2").Value
sBody = Replace(sBody, Chr(10), "
", 1, -1, vbTextCompare) Set objOutlook = CreateObject("Outlook.Application") Set objMail = objOutlook.CreateItem(0) With objMail .To = "deinname@deinedomain.de" .Subject = "Betreff" .htmlBody = "Sehr geehrte Damen und Herren,
" & sBody .Display End With ''usw. Set objMail = Nothing Set objOutlook = Nothing End Sub
Gruß von Luschi
aus klein-Paris
Anzeige
AW: excel vba mail
14.12.2020 15:40:59
volti
Hallo Vera,
einfach eine HTML-Mail nehmen und so einsetzen
.htmlbody = Replace(Range("b2").Value, vbLf, "<br>")
_________________________
viele Grüße aus Freigericht 😊
Karl-Heinz

Anzeige
;

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige