Automatische Mails mit originaler Outlook-Signatur
#1
Hallo Forum,

welche Möglichkeiten gibt es die originale Outlook-Signatur in Mails zu integrieren, die durch Excel erstellt werden?
Folgenden Code verwende ich für das entsprechende Makro, um die Mail zu erstellen. Das funktioniert einwandfrei, bis auf die fehlende Signatur.

Office Version ist Home and Business 2016.

Ich freue mich über Unterstützung! Sollten noch Informationen benötigt werden, bitte sagen. Die ursprüngliche Datei enthält die Mailadressen, Betreffzeile und Pfad des Anhangs in den Zellen.

Code:
Sub Reporting_versenden()

Dim objOutlook As Object
Dim objMail As Object

Set objOutlook = CreateObject("Outlook.Application")
Set objMail = objOutlook.CreateItem(0)

With objMail
   .To = ThisWorkbook.Worksheets("Reportings").Range("B3")
   .Cc = ThisWorkbook.Worksheets("Reportings").Range("B4") & "; " & ThisWorkbook.Worksheets("Reportings").Range("B5") & "; " & ThisWorkbook.Worksheets("Reportings").Range("B6")
   .Subject = ThisWorkbook.Worksheets("Reportings").Range("D3")
   .Attachments.Add Cells(11, 2).Value
   .Body = "Hallo Frau ...," & vbCrLf & "" & vbCrLf & "anbei erhalten Sie mein Reporting für diese Woche." & vbCrLf & "" & vbCrLf & "Mit besten Grüßen" & Chr(13) & _
   .GetInspector.Display
   End With
End Sub
Top
#2
Hallöchen,

schaue mal dort:

Ron de Bruin: Insert Outlook Signature in mail
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Top
#3
Hallo Phiant,

so sollte es gehen:
Code in die Zwischenablage
Sub Reporting_versenden()

Dim objOutlook As Object
Dim objMail As Object

Set objOutlook = CreateObject("Outlook.Application")
Set objMail = objOutlook.CreateItem(0)

With objMail
  .To = ThisWorkbook.Worksheets("Reportings").Range("B3")
  .Cc = ThisWorkbook.Worksheets("Reportings").Range("B4") & "; " & ThisWorkbook.Worksheets("Reportings").Range("B5") & "; " _
      & ThisWorkbook.Worksheets("Reportings").Range("B6")
  .Subject = ThisWorkbook.Worksheets("Reportings").Range("D3")
  .Attachments.Add Cells(11, 2).Value
  .GetInspector
  .body = "Hallo Frau ...," & vbCrLf & "" & vbCrLf & "anbei erhalten Sie mein Reporting für diese Woche." & vbCrLf & "" _
        & vbCrLf & "Mit besten Grüßen" & Chr(13) & .body
  .Display
End With

End Sub

und falls es wider Erwarten nicht geht, stelle um auf HTML-Format:
Code in die Zwischenablage
Sub Reporting_versenden()

Dim objOutlook As Object
Dim objMail As Object

Set objOutlook = CreateObject("Outlook.Application")
Set objMail = objOutlook.CreateItem(0)

With objMail
  .To = ThisWorkbook.Worksheets("Reportings").Range("B3")
  .Cc = ThisWorkbook.Worksheets("Reportings").Range("B4") & "; " _
      & ThisWorkbook.Worksheets("Reportings").Range("B5") & "; " _
      & ThisWorkbook.Worksheets("Reportings").Range("B6")
  .Subject = ThisWorkbook.Worksheets("Reportings").Range("D3")
  .Attachments.Add Cells(11, 2).Value
  .BodyFormat = 2
  .GetInspector
  .htmlbody = "Hallo Frau ...,<br><br>anbei erhalten Sie mein Reporting für diese Woche." _
            & "<br><br>Mit besten Grüßen<br>" & .htmlbody
  .Display
End With

End Sub
viele Grüße aus Freigericht
Karl-Heinz
[-] Folgende(r) 2 Nutzer sagen Danke an volti für diesen Beitrag:
  • schauan, Phiant
Top
#4
Hallo Volti,

direkt nochmal vielen Dank! Die erste Variante war für die Signatur nicht geeignet, aber das HTML-Format macht es perfekt :)

Damit ich verstehe was jetzt anders ist, außer der übersichtlicheren Strukturierung des Codes:
.BodyFormat = 2 -> stellt die Schriftgröße ein (klappt das auch als Schriftgröße 11?)
.htmlbody = Text -> Absatz/Leerzeile wird jetzt als
eingegeben
.htmlbody -> als Abschluss wird auch die Signatur korrekt angehängt

Eine Frage habe ich noch: Warum wird die Signatur nach 2 Leerzeilen eingefügt? Das ändert sich übrigens auch nicht, wenn ich das
am Ende des Textes weglasse :/
Nach diesem Schema kann ich meine anderen Makros für weitere Reportings anpassen und wenn das ab jetzt direkt so gut klappt, kann ich statt .display ein .send einfügen, um die Mails direkt zu verschicken?

P.S.: Hast du einen Tipp wie man als VBA Neuling ohne Programmierkenntnisse tiefer in das Thema einsteigen kann? Vor allem in Bezug auf: "Was sind die Basics und was sollte man weiter vertiefen?" (Insofern das nicht vollkommen vom Verwendungszweck abhängt...)

Erleichterte Grüße,
Philip
Top
#5
Hallo Philip,

habe mir erlaubt, Deine eMail mal ein wenig anzupassen. Ich hoffe, das ist in Deinem Sinne.

Im HTML-Format kannst Du Deine eMail komplett formatieren. Habe mal den ganzen body gleichmäßig formatiert. Natürlich kann man auch Teilbereiche anders formatieren.
Im <span>-Tag habe ich die Schriftart, die Schriftgröße und die Schriftfarbe mal vorgesehen.
Über die <br>-Tags werden Zeilenumbrüche vorgenommen, das <b>-Tag formatiert etwas fett (kannst Du ja wieder rausnehmen).

Zu Deiner Lernfrage habe ich leider keinen Tipp (außer Buch vielleicht), weil ich das Programmieren in 36 Jahren autodidaktisch erlernt habe.

PS: Falls Du den body-Text nicht in einem Rutsch zusammenstellst, solltest Du die Signatur zunächst in eine Variable speichern und später anhängen:
Beispiel: .GetInspector: sSignatur=.htmlbody
Im Moment besteht dazu kein Anlass.


Code in die Zwischenablage[+][-]
Option Explicit

Sub Reporting_versenden()
Dim WSh As Worksheet

Set WSh = ThisWorkbook.Sheets("Reportings")    'Blatt Referenz setzen

With CreateObject("Outlook.Application").CreateItem(0) 'eMail kreieren
  .To = WSh.Range("B3").Value                  'Empfänger
  .Cc = WSh.Range("B4").Value & "; " _
      & WSh.Range("B5").Value & "; " _
      & WSh.Range("B6").Value                  'Kopieempfänger
  .Subject = WSh.Range("D3").Value              'Betreff
  If WSh.Cells(11, 2).Value <> "" Then
    If Dir(WSh.Cells(11, 2).Value) <> "" Then  'Ist Anlage vorhanden?
    .Attachments.Add WSh.Cells(11, 2).Value    'Anlage dran
    End If
  End If
  .BodyFormat = 2                              'HTML-Format einstellen
  .GetInspector                                'Signatur holen
  .htmlbody = "<span style='font-family:Arial;font-size:11pt;color:#000000;'>" _
            & "Hallo Frau ...,<br><br>" _
            & "anbei erhalten Sie mein Reporting für diese Woche.<br><br>" _
            & "<b>Mit besten Grüßen</b></span>" & .htmlbody
  .Display
End With

End Sub
viele Grüße aus Freigericht
Karl-Heinz
[-] Folgende(r) 1 Nutzer sagt Danke an volti für diesen Beitrag:
  • Phiant
Top
#6
Danke für die Kommentierung des Codes  :15:

Schriftgröße 11 wird leider nicht genutzt, Outlook bleibt bei 10 die Schriftart kann ich dagegen frei anpassen  :20:

Edit: 10, 11.5, 12 funktionieren einwandfrei, nur die Standard 11 nicht?
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste