Outlook-Workshop - Email aus Word/Excel erstellen Teil 2
-----------------------------
Kommen wir jetzt zur Anpassung des Body-Textes. Im Beispiel wird der gesamte Text mit der Schriftart "Arial" und der Schriftgröß "12.5" formatiert. Zusätzlich wird die zweite Zeile unterstrichen und dessen Text fett dargestellt. Damit eine ganze Zeile unterstrichen werden kann, müssen wir dessen Länge ermitteln, also dessen Start und Ende. Dazu zählt man zuerst die Zeichen vom ersten Wort bis zum Anfang der zweiten Zeile. Leerzeilen zählen jeweils ein Zeichen, auch Leerzeichen sind mitzuzählen. Im Beispiel beginnt die zweite Zeile an Position 41. Das Ende der zweiten Zeile ermitteln wir anhand der Länge des Inhaltes der Zelle A1, aus welcher wir die "Auftragsnummer" übernehmen. Man setzt dazu das letzte Zeichen vor dem Abfragen des Zellinhaltes und addiert die Länge der Zelle A1 hinzu. Im Beispiel ist das letzte Zeichen ein Leerzeichen, an Position 69. Also "69 + lngZelle". Der Inhalt vor der zweiten Zeile ist im Beispiel immer gleich. Sollte das bei Ihnen nicht der Fall sein, dann müssen Sie auch die Länge des Textes vor der zweiten Zeile berücksichtigen.
Und damit die Signatur durch die Formatierung nicht zerstört wird, fügen wir sie erst zum Schluß wieder hinzu.
Public Sub Email_Erstellen_Formatiert()
Dim olApp As Object
Dim wdApp As Object
Dim wdDoc As Object
Dim wdRange As Object
Dim olOldbody As String
Dim olNewBody As String
Dim lngZelle As Long
Rem Länge Zelle mit Auftragsnummer feststellen
lngZelle = Len(ThisWorkbook.Sheets("Tabelle1").Range("A1"))
Rem Emailtext erstellen
olNewBody = "Hallo!" & "<br><br>" ' Grußzeile
olNewBody = olNewBody & "Anbei gewünschte Informationen." & "<br><br>" ' Zeile 1
olNewBody = olNewBody & "Ihre Auftragsnummer lautet: " & Range("A1") & "<br><br>" 'Zeile 2
olNewBody = olNewBody & "Mit freundlichen Grüßen," & "<br>" ' Schlußgruß
olNewBody = olNewBody & "Max Mustermann" ' Name/Unterschrift
Rem Outlook-Objekt erstellen
Set olApp = CreateObject("Outlook.Application")
Rem Email erstellen
With olApp.CreateItem(0)
.GetInspector.Display
olOldbody = .htmlBody
.Subject = "Test"
.htmlBody = olNewBody
Rem Word-Editor-Objekt erstellen (zum Formatieren erforderlich)
Set wdApp = .GetInspector
Set wdDoc = wdApp.WordEditor
Set wdRange = wdDoc.Range
wdRange.WholeStory
Rem Emailtext formatieren
With wdRange
Rem Schriftart und Schriftgröße festlegen
.Font.Name = "Arial"
.Font.Size = 12.5
End With
Rem Untersreichen und Fett
Set wdRange = wdDoc.Range(41, 69 + lngZelle)
With wdRange
.Font.Underline = True
.Font.Bold = True
End With
Rem Emailtext um Signatur ergänzen
.htmlBody = .htmlBody & olOldbody
End With
Rem Objekte freigeben
Set wdRange = Nothing
Set wdDoc = Nothing
Set wdApp = Nothing
Set olApp = Nothing
End Sub