Clever-Excel-Forum

Normale Version: Signatur per VBA einfügen und Text formatieren?
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hab jetzt ein Marko, welches mir eine Mail erzeugt in der schon Empfänger, CC und die Betreffzeile eingefügt sind.

In der Betreffzeile wird der letzte Monat angezeigt.

Funktioniert alles gut.

Code:
Public Sub Mailerzeugen()
Set MyOutApp = CreateObject("Outlook.Application")
Set MyMessage = MyOutApp.CreateItem(0)
With MyMessage
.To = "test@test.de"
.CC = "test2@test2.de; test3@test2.de"
.Subject = "Report " & Format(DateAdd("m", -1, Now), "MMM-YY") & ""
.Body = "Testtext"
.Display
End With
Set MyOutApp = Nothing
Set MyMessage = Nothing

End Sub


Aber mit dem Text habe ich meine Probleme.

Leider wird beim erstellen meine Signatur nicht automatisch in die Mail eingefügt.
Diese soll aber immer mit dabei sein.
Könnte diese aber notfalls auch als Text in das Makro einfügen.


Aber wie erstelle ich weitere Textzeilen?
ich möchte einen Standarttext mit Absätze erstellen.
Muss ich dafür eine neue Linie einfügen in den Text? 

Euch sonnige Grüße. :)
Den Zeilemumbruch habe ich hinbekommen.

einfach & vbLf & einfügen.

Jetzt noch die Signatur und ich wäre glücklich.  19
Hallo Excelmachtspass,

die Signatur in Outlook wird erst beim Anzeigen eines MailObjekts erzeugt. Du musst also die GUI simulieren. Dies kannst du über .GetInspector() tun (ungetestet:]

Code:
Sub Testen()
With CreateObject("Outlook.Application")
   With .CreateItem(0) 'olMailItem
      .GetInspector
      .To = "Keine@Addres.se"
      .Subject ="Eine HTML-Nachricht"
      .HTMLBody = "Dein nachrichtentext<br />" & .HTMLBody
      .Display
   End With
End With
End Sub
Beachte dabei, dass die Signatur nur im HTML-Body funktioniert und du deinen Nachrichtentext entsprechend als HTML-Quelltext formatieren solltest. Einen Zeilenumbruch erzeugst du daher mit dem br -Tag (oder noch besser, in dem du unterschiedliche Absätze in eigenen paragraph-Tags unterbringst).
Beachte weiterhin, dass du mit der obigen vereinfachten Methode invalides HTML erzeugst, da du HTML-Quelltext vor ein abgeschlossenes body-Element packst. Den meisten Mail-Clients macht das wahrscheinlich nichts aus, aber wenn jemand einen E-Mail-Client einsetzt, der einen gründlichen HTML-Parser einsetzt, kommt deine Nachricht vielleicht nicht wie gewünscht an.

Alternativ kannst du mit .GetInspector().WordEditor auch auf die eingebettete (abgespeckte) Word-instanz in Outlook zugreifen und deine Mail im Word-Objektmodell komponieren. Dann umgehst du a) das Problem, gültiges HTML liefern zu müssen und b) invalides HTML zu erzeugen. Du musst nur darauf achten, dass du die Word-Range ab Position 0 editierst, damit du nicht unterhalb der Signatur schreibst.

Viele Grüße
derHöpp
(05.01.2023, 14:56)Excelmachtspass schrieb: [ -> ]Den Zeilemumbruch habe ich hinbekommen.

einfach & vbLf & einfügen.

Jetzt noch die Signatur und ich wäre glücklich.  19

Code:
.BodyFormat = 2
.GetInspector
.HTMLBody = "<span style='font-family:Calibri;font-size:11.5pt;'>" _
              & "<p>Liebe(r) Excelmachtspass,</p>" _
              & "<p>anbei erhältst du meine Praxiserprobte Variante die ich schon lange vor dem " _
              & Format(DateAdd("m", -1, Now), "MMM-YY") YY& " genutzt habe.</p>" _
              & "Liebe Grüße,<br>" _
              & "Phiant</span>" & .HTMLBody
Kleiner Beispieltext  19 mit
(linebreak) machst du eine neue Zeile mit

Hier steht dein Text

(paragraph) einen neuen Absatz. Die zusätzliche Leerzeile vor deiner Signatur lässt sich automatisiert wohl nur sehr umständlich umgehen - ich habe zumindest keine funktionierende Lösung im Netz gefunden.

Was derHöppe da schreibt finde ich sehr interessant! Ich hatte zwar noch keine Probleme mit meinen automatisierten Mails, aber wenn derHöppe das nochmal genauer erklären könnte wäre schön :)
Zitat:...mit der obigen vereinfachten Methode invalides HTML erzeugst, da du HTML-Quelltext vor ein abgeschlossenes body-Element packst.