Outlook-Workshop - Email aus Word/Excel erstellen Teil 2

In den nächsten zwei Teilen lernen wir, wie man den Emailtext formatieren kann. Im Internet gibt es zahlreiche Seiten, auf denen das Formatieren von Emailtext per HTML-Tags erfolgt. Hier lernen Sie, wie es auch ohne HTML-Kenntnisse möglich ist. Wir bedienen uns dazu des WordEditor-Objektes, in dem man ähnlich wie in Word-VBA die Word-VBA-Parameter nutzen kann. Kenntnisse in Word-VBA sind hier von Vorteil.

-----------------------------


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