VBA kann für wundervolle Arbeitserleichterungen in der Microsoft-Office-Welt genutzt werden und man kann nur hoffen, dass Microsoft VBA nie abschafft. Nehmen wir mal an, Sie haben sich ein VBA-Skript erstellt, um automatisch eine E-Mail zu erzeugen oder automatisch auf eine E-Mail zu antworten. Natürlich will man in einem solchen Fall die E-Mail noch etwas nach seinen Wünschen formatieren und z.B. die Schriftgröße oder Schriftart ändern. Es gibt hier zwei Varianten, die sich anbieten. Dies hängt davon ab, ob man seine E-Mail im HTML-Format formatiert haben möchte oder lieber im Rich-Text-Format.
Mittels HTML Schriftart und Schriftgröße einstellen
Das Skript zum Erzeugen einer neuen E-Mail sieht wie folgt aus. Hier muss man darauf achten, dass nicht olFormatPlain dieser Eigenschaft zugewiesen ist, sondern olFormatHTML. In diesem Fall wird die Mail dann nämlich mittels HTML formatiert, was maximale Freiheit bei der Gestaltung des Textes liefert.
Public Sub NewMailWithSpecificFontSize()
Dim olItem As Outlook.MailItem
Set olItem = Application.CreateItem(olMailItem)
With olItem
.To = "max.mustermann@my-domain.de"
.subject = "In dringender Angelegenheit"
.BodyFormat = olFormatHTML
.HTMLBody = "<BODY style=font-size:20pt;font-family:Calibri><p>Hallo,</p><p>Ich kontaktiere Sie in der dringenden Angelegenheit XY!</p><p>Hochachtungsvoll,<br>Frederike von Sanghausen</p></BODY>"
.Display
End With
Set olItem = Nothing
End Sub
In diesem Fall kann man nämlich CSS-Syles einbauen, um die Schriftart und Schriftgröße automatisch zu ändern. In dem Code-Beispiel oben wurde die Schriftgröße innerhalb des HTML-Textes auf 20pt eingestellt, was recht groß ist.
Wichtig: Der Text darf nicht der Eigenschaft Body zugewiesen werden, sonst sieht man den HTML-Code in der Mail selbst. Der HTML-Code muss der Eigenschaft HTMLBody zugewiesen werden.
Führt man das Makro aus, dann sieht die E-Mail so aus:
Im Rich-Text-Format Schriftart und Schriftgröße anpassen
Outlook bietet noch die alternative Möglichkeit, dass E-Mails als Rich-Text formatiert werden. Hier kann man dann auch die Schriftart und Schriftgröße nach seinen Wünschen anpassen. Der VBA-Code dafür sieht wie folgt aus:
Public Sub NewMailWithSpecificFontSize2()
Dim olItem As Outlook.MailItem
Dim wdApp As Object
Dim wdDoc As Object
Dim wdRange As Object
Set olItem = Application.CreateItem(olMailItem)
With olItem
.To = "max.mustermann@my-domain.de"
.subject = "In dringender Angelegenheit"
.BodyFormat = olFormatRichText
.body = "Hallo," & vbCrLf & vbCrLf & "Ich kontaktiere Sie in der dringenden Angelegenheit XY!" & vbCrLf & vbCrLf & "Hochachtungsvoll," & vbCrLf & "Frederike von Sanghausen"
Set wdApp = .GetInspector
Set wdDoc = wdApp.WordEditor
Set wdRange = wdDoc.Range
wdRange.WholeStory
With wdRange
.Font.Name = "Arial Rounded MT Bold"
.Font.Size = 16.5
End With
.Display
End With
Set olItem = Nothing
End Sub
Man sieht, dass man, um die Rich-Text-Formatierungen vornehmen zu können, man ein Objekt eines Word-Dokument (wdDoc) erzeugen muss. Erst dann hat man Zugriff auf die Eigenschaften Font.Name und Font.Size. Das E-Mail-Objekt (olItem) selbst bietet diese Eigenschaften nicht.
Das Ergebnis sieht dann wie im nachfolgenden Bild aus:
Verwendet man das olFormatPlain als Formatierung, dann bekommt man die E-Mail als reines Textdokument formatiert. In diesem Fall hat man keine Möglichkeit, den Text der E-Mail zu formatieren. Aber auch das kann ja in manchen Fällen ausreichend sein.