Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1232to1236
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

E-Mail mit vorgegebener Schriftart versenden

E-Mail mit vorgegebener Schriftart versenden
Max
Hallo,
ich versende mit folgendem VBA-Code eine E-Mail über Outlook aus Excel heraus:
Set outObj = CreateObject("outlook.application")
Set mail = outObj.createItem(0)
.
.
With mail
.Subject = "Aufstellung der Vorauszahlung" & " Datum: " & strDatum
.body = strBody
.To = strMailAdress
.send
End With

Als Schriftart bräuchte ich eine nicht Proportionlschrift wie Courier, da der Mail-Text (strBody) eine Aufstellung, also Spalten mit Leerzeichenenthält, welche bei Proporitonalschriften wie Arial verschoben wird, da die Leerzeichen eben schmäler sind als andere Zeichen.
Gibt es eine Möglichkeit, dass ich beim Versenden der E-Mail eine Schriftart z.B. Courier mit angeben kann? Oder gibt es eine andere Lösung?
Vielen Dank
Max

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: E-Mail mit vorgegebener Schriftart versenden
27.10.2011 08:59:19
Dirk
Hallo Max,
wie befuellst Du denn Deinen Mailbody?
Mit etwas Aufwand kannst Du Deine zu sendende Range in HTML umwandeln und dieses als .bodyhtml einfuegen.
Dabei hast Du dann genau dieselbe formatierung, schrift etc. wie in Deiner Ursprungsdatei.
Gruss
Dirk aus Dubai
AW: E-Mail mit vorgegebener Schriftart versenden
27.10.2011 09:55:01
Max
Hallo,
vielen Dank für Dein Feedback.
Ich lesen Daten aus einer Excel-Tabelle aus und übergebe diese Variablen, also bspw. so:
wert1 = Range("A1").value
wert2 = Range("B1").value
wert3 = Range("C1").value
Anschließend verknüpfe ich die Werte und übergebe dieser der Variable für den Mail-Body:
strBody = wert1 & wert2 & wert3
Vielen Dank
Max
Anzeige
AW: E-Mail mit vorgegebener Schriftart versenden
27.10.2011 10:11:47
Dirk
hallo Max,
anbei mal ein angepasstes Makro von Ron de Bruin. Vieleicht ist das ja was fuer dich:
Beim Aufruf des Macros muss die Range uebergeben werden, welche versendet werden soll.
Der Aufruf erfolgt ueber den Eintrag .htmlbody = RangetoHTML(rng)
Komplett etwa so:
.To = ToEmail
.CC = ""
.BCC = ""
.Subject = "Action item update"
.HTMLBody = StrBody & RangetoHTML(rng)
.Display
.Send
Hier nun noch die ~Function~ (in ein Modul)

Function RangetoHTML(rng As Range)
' Changed by Ron de Bruin 28-Oct-2006
' Working in Office 2000-2010
' Adjusted by Dirk Schoas 2011
Dim fso As Object
Dim ts As Object
Dim TempFile As String
Dim TempWB As Workbook
Dim TempRng As Range
TempFile = Environ$("temp") & "/" & Format(Now, "dd-mm-yy h-mm-ss") & ".htm"
'Copy the range and create a new workbook to past the data in
If InStr(1, rng.Address, ",")  0 Then
'separate the ranges to be able to copy to the html
Set TempRng = Range(Left(rng.Address, Len(rng.Address) - InStr(1, rng.Address, ",")))
Debug.Print TempRng.Address
TempRng.Copy
Else
rng.Copy
End If
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
'copy second part if split range was given
If InStr(1, rng.Address, ",")  0 Then
With ThisWorkbook.ActiveSheet
Set TempRng = .Range(Right(rng.Address, Len(rng.Address) - InStr(1, rng.Address, _
",")))
Debug.Print TempRng.Address
TempRng.Copy
End With
.Cells(2, 1).PasteSpecial Paste:=8
.Cells(2, 1).PasteSpecial xlPasteValues, , False, False
.Cells(2, 1).PasteSpecial xlPasteFormats, , False, False
.Cells(2, 1).Select
Application.CutCopyMode = False
End If
On Error Resume Next
.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
Lass' hoeren, ob ok.
Gruss
Dirk aus Dubai
Anzeige

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige