Clever-Excel-Forum

Normale Version: Verkürzung VBA-Code für senden einer E-Mail
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hi,

mit einem Makro, erstelle ich eine E-Mail mit Signatur.

Im Blatt Vorgaben habe ich in den Zellen C15 bis C27 die Texte stehen, die ich nacheinander zur Gesamtsignatur verknüpfe.
Diese Signatur wird dann im htmlbody aufgerufen, die weiteren Texte für den Body stehen in C9 bis C13.

Hier der entsprechende Ausschnitt aus dem Code:
PHP-Code:
       strSignature Worksheets("Vorgaben").Range("C15") & "<br>" "<b>" Worksheets("Vorgaben").Range("C16") & "</b>" "<br>" _
          Worksheets
("Vorgaben").Range("C17") & "<br><br>" "<img src=""cid:logo.png""height=30 width=300""align=""top"">" "<br>" _
          Worksheets
("Vorgaben").Range("C18") & "<br>" Worksheets("Vorgaben").Range("C19") & "<br>" _
          Worksheets
("Vorgaben").Range("C20") & "<br>" Worksheets("Vorgaben").Range("C21") & "<br>" Worksheets("Vorgaben").Range("C22") & "<br>" _
          Worksheets
("Vorgaben").Range("C23") & "<br>" Worksheets("Vorgaben").Range("C24") & "<br><br>" Worksheets("Vorgaben").Range("C25") & "<br>" _
          Worksheets
("Vorgaben").Range("C26") & "<br>" Worksheets("Vorgaben").Range("C27")

       .htmlBody Worksheets("Vorgaben").Range("C9") & "<br><br>" Worksheets("Vorgaben").Range("C10") & " " _
          Worksheets
("Vorgaben").Range("C11") & "<br><br>" Worksheets("Vorgaben").Range("C12") & "<br>" Worksheets("Vorgaben").Range("C13") & "<br><br>" _
          strSignature 

Ich habe keine Idee, wie ich das zusammenfassen/verkürzen kann. Wie geht denn das?
Mit einer For-Next-schleife geht es ja nicht, wegen den unterschiedlich vielen Zeilenumbrüchen (br). Ich will aber auch nicht den kompletten Text in eine Zelle packen.

Oder kann ich im VBA einschalten, daß die Standard- oder eine andere in Outlook definierte Signatur verwendet wird?

Gruß Ralf
Hallo,

da Outlook MS-Word integrieren kann, stehen (versteckte) Bookmarks zur Verfügung:

Teil eines funktionierenden Codes:

Code:
dim EML as mailitem

EML.BodyFormat = olFormatHTML


Set Doc = EML.GetInspector.WordEditor


If Doc.Bookmarks.Exists("_MailAutoSig") Then
        Set Bkmrk = Doc.Bookmarks("_MailAutoSig")
        
        If Not Bkmrk Is Nothing Then
            Bkmrk.Select
            Doc.Windows(1).Selection.Delete
            'Bkmrk.Range.Text = "qwe" ' oder "" für löschen
        End If
    End If


Mit Bkmrk.Range.Text = "beliebiger Text" kann eine Signatur gesetzt werden.

mfg
Hi Fennek,

das heißt, ich lege irgendwo ein verstecktes Bookmark an?
Oder in der Excel-Datei oder Word oder Outlook?

Da bin ich momentan noch überfordert.

MfG
Ja, das ist leicht verwirrend.

Der Code ist in Outlook gelaufen, muss von XL aus also mit der Outlook.Application refenziert werden. Mit "Doc = EML.GetInspector.WordEditor" wird Word als Editor gestartet und alle Word-VBA-Befehler stehen zur Verfügung. Das versteckte Bookmark "_MailAutoSign" wird m.W.n. von Outlook automatisch generiert.

Von Xl aus habe ich es nie getestet.
Hi,

ich glaube, das ist mir momentan zu kompliziert.

Darum erneuere ich die erste Frage:
Rabe schrieb:Ich habe keine Idee, wie ich das zusammenfassen/verkürzen kann. Wie geht denn das?
Hi Ralf,


probiere mal das:


Code:
With Worksheets("Vorgaben")
    For loco = 15 To 27
        strSignature1 = strSignature1 & .Cells(loco, 3) & "<br>"
            If loco = 15 Then strSignature = strSignature & "<b>"
            If loco = 16 Then strSignature = strSignature & "</b>"
            If loco = 17 Then strSignature = strSignature & "<br>" & "<img src=""cid:logo.png""height=30 width=300""align=""top"">" & "<br>"
            If loco = 24 Then strSignature = strSignature & "<br>"
    Next
End With
Hi Edgar,

danke. So geht es => Klasse

Das verstehe ich auch und kann es nachvollziehen.

Gruß Ralf