Zu meinem Artikel „E-Mail mit Anhang versenden über VBA“ gab es gestern einen Kommentar.
In diesem wurde ein Problem aufgebracht, welches sich nicht ganz so einfach lösen lies. Es sollte eine Funktion genutzt werden, die seit Office 2013 nicht mehr zur Verfügung steht. Der Befehlsaufruf hätte die vordefinierte Signatur an das Ende der E-Mail gesetzt werden sollen. Dieses habe ich wie folgt gelöst:
Sub MailversandSignatur() Dim sPath As String Dim strUser As String Dim strPfad As String Dim strSignatur As String Dim Body As String Dim Nachricht As Object, OutlookApplication As Object Set OutlookApplication = CreateObject("Outlook.Application") Dim Anhang As String Anhang = ThisWorkbook.FullName Set Nachricht = OutlookApplication.CreateItem(0) With Nachricht .To = "testuser@testdomain.de" .Subject = "Test" .Attachments.Add Anhang 'Namen der Signatur definieren strSignatur = "TestSignatur" strUser = Environ("Userprofile") strPfad = strUser & "\AppData\Roaming\Microsoft\Signatures\" & strSignatur & ".htm" .htmlBody = "<html><body><p>Sehr geehrte Damen und Herren,</p><p>im Anhang erhalten Sie die Liste.</p><p></p>" & test(strPfad) & "</body></html>" .Display '.Mail.Send End With Set OutlookApplication = Nothing Set Nachricht = Nothing End Sub Function test(sPath As String) test = CreateObject("Scripting.FileSystemObject").OpenTextFile(sPath).ReadAll() End Function
Ich lese die Signatur aus dem Standard-Ablagepfad in Form der gespeicherten HTML-Datei aus. Diese wird an das Ende des „HTMLBody“ der E-Mail angehangen.
Mit der Formatierung benötige ich die „SendKeys“-Methode nicht. Dieses wird in einigen Sicherheitsrelevanten Programmen wie Antiviren-Lösungen als problematisch deklariert.