Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: VBA Excel Mailversand per Outlook mit Signatur

VBA Excel Mailversand per Outlook mit Signatur
08.02.2021 16:16:55
Erik
Hallo,
ich benötige mal wieder eure Hilfe. Vielen Dank im Voraus.
Ich erzeuge aus einer Exceltabelle per VBA eine Mail mit Anhang und Signatur. Das funktioniert bei mir recht gut. Ich möchte aber die Anrede und den zusätzlichen Mailtext in einer Variablen weitergeben, damit ich bereits in der Exceltabelle die passende Anrede und den Mailtext schreiben kann. Momentan ist dieser als fixer Teil im HTML Body enthalten!
Vielleicht hat jemand ne Idee?
Sub Mail_Outlook()
Dim olApp     As Object
Dim olOldBody As String, varKW_Jahr As String
Dim GetHtmlBodyText As String
Dim strFilePDF As String
Dim varEmpfaenger As String, varKopie As String
Const sPfad As String = "C:\STtool\Rapport\"
varKW_Jahr = Range("B3") & "/" & Range("D1")
varEmpfaenger = "MaiAdresse1"
varKopie = "MaiAdresse2"
strFilePDF = sPfad & "DE.pdf"
Set olApp = CreateObject("Outlook.Application")
With olApp.CreateItem(0)
.GetInspector.Display
olOldBody = .HTMLBody
.Subject = "Wochenbericht KW " & varKW_Jahr
.To = varEmpfaenger
.CC = varKopie
.HTMLBody = "  Hallo Gast,
" & "
" _ & "Hier soll der Text in Form einer Variablen stehen.
" _ & olOldBody .Attachments.Add strFilePDF .Display End With Set olApp = Nothing End Sub

Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Excel Mailversand per Outlook mit Signatur
08.02.2021 17:35:21
volti
Hallo Erik,
hier ein Beispiel, wie Du eine Variabel aus zwei Excelfeldern bestückst für Anrede und Text.
Da Du eine HTML-Mail verwendest, muss ggf. noch die Zeilenumbrüche formatiert werden und vielleicht möchtest Du den Text ja auch noch formatieren.
Teste es mal und passe es ggf. noch an:
Code:

[Cc][+][-]

Option Explicit Sub Mail_Outlook() Dim varKW_Jahr As String Dim strGetHtmlBodyText As String Dim strFilePDF As String Dim strEmpfaenger As String, strKopie As String Const sPfad As String = "C:&bsol;STtool&bsol;Rapport&bsol;" varKW_Jahr = Range("B3") & "/" & Range("D1") strEmpfaenger = "MaiAdresse1" strKopie = "MaiAdresse2" strFilePDF = sPfad & "DE.pdf" strGetHtmlBodyText = Range("A1").Value & vbLf & Range("a2").Value ' Text formatieren strGetHtmlBodyText = Replace(strGetHtmlBodyText, vbLf, "<br>") strGetHtmlBodyText = "<body style='font-family:Arial;font-size:10pt;color:#000000'>" _ & strGetHtmlBodyText & "</body>" With CreateObject("Outlook.Application").CreateItem(0) .GetInspector .Display .Subject = "Wochenbericht KW " & varKW_Jahr .To = strEmpfaenger .CC = strKopie .htmlbody = strGetHtmlBodyText & .htmlbody .Attachments.Add strFilePDF End With End Sub

_________________________
viele Grüße aus Freigericht 😊
Karl-Heinz

Anzeige
AW: VBA Excel Mailversand per Outlook mit Signatur
08.02.2021 17:52:39
Erik
Hallo Volti,
danke für die schnelle Antwort.
Das werd ich gleich mal ausprobieren.
Gruss
Erik
AW: VBA Excel Mailversand per Outlook mit Signatur
09.02.2021 09:38:37
Erik
Hallo volti,
es funktioniert einwandfrei! Danke dir nochmals.
Gruss
Erik
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

VBA Mailversand per Outlook mit Signatur in Excel


Schritt-für-Schritt-Anleitung

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Füge ein neues Modul hinzu: Rechtsklick auf "VBAProject (DeineDatei.xlsx)" > Einfügen > Modul.
  3. Kopiere den folgenden Code in das Modul:
Sub Mail_Outlook()
    Dim olApp As Object
    Dim olOldBody As String, varKW_Jahr As String
    Dim strGetHtmlBodyText As String
    Dim strFilePDF As String
    Dim varEmpfaenger As String, varKopie As String
    Const sPfad As String = "C:\STtool\Rapport\"

    varKW_Jahr = Range("B3") & "/" & Range("D1")
    varEmpfaenger = "MaiAdresse1"
    varKopie = "MaiAdresse2"
    strFilePDF = sPfad & "DE.pdf"

    Set olApp = CreateObject("Outlook.Application")
    With olApp.CreateItem(0)
        .GetInspector.Display
        olOldBody = .HTMLBody
        .Subject = "Wochenbericht KW " & varKW_Jahr
        .To = varEmpfaenger
        .CC = varKopie
        .HTMLBody = "<b><font face='verdana' size='2'>Hallo Gast,</font></b><br>" & _
                    "<font face='verdana'>Hier soll der Text in Form einer Variablen stehen.</font><br>" & _
                    olOldBody
        .Attachments.Add strFilePDF
        .Display
    End With
    Set olApp = Nothing
End Sub
  1. Passe die Variablen an: Stelle sicher, dass varEmpfaenger, varKopie, und der Pfad zu strFilePDF korrekt sind.
  2. Führe das Makro aus: Klicke im VBA-Editor auf Run oder drücke F5.

Häufige Fehler und Lösungen

  • Mail wird nicht gesendet: Überprüfe, ob Outlook korrekt konfiguriert ist und du die richtigen E-Mail-Adressen verwendet hast.
  • Dateianhang fehlt: Stelle sicher, dass der angegebene Pfad zu strFilePDF korrekt ist und die Datei existiert.
  • HTML-Formatierung nicht angezeigt: Achte darauf, dass du den HTML-Body korrekt formatierst. Verwende Replace, um Zeilenumbrüche in <br> umzuwandeln.

Alternative Methoden

  • Verwendung von CreateObject für Outlook: Anstelle von Set olApp = New Outlook.Application kannst du CreateObject("Outlook.Application") verwenden, um die Instanz dynamisch zu erstellen.
  • Direktes Einfügen von Signaturen: Wenn du eine standardmäßige Signatur in Outlook hast, kannst du diese direkt ins HTMLBody einfügen, indem du .HTMLBody = .HTMLBody & "<br>" & SignaturText anfügst.

Praktische Beispiele

Hier ein Beispiel, wie du die Anrede und den Mailtext aus Excel-Zellen beziehen kannst:

strGetHtmlBodyText = Range("A1").Value & vbLf & Range("A2").Value
strGetHtmlBodyText = Replace(strGetHtmlBodyText, vbLf, "<br>")

In diesem Beispiel stehen die Zellen A1 und A2 für die Anrede und den Mailtext. Dies sorgt für eine flexible Anpassung direkt in der Excel-Tabelle.


Tipps für Profis

  • Variablen sinnvoll benennen: Verwende sprechende Namen für deine Variablen, um den Code leichter verständlich zu machen.
  • Fehlerbehandlung einbauen: Implementiere On Error Resume Next, um Fehler abzufangen und den Code robuster zu gestalten.
  • Signatur automatisiert einfügen: Überlege, eine Funktion zu erstellen, die automatisch die Signatur aus Outlook abruft und in die E-Mail einfügt.

FAQ: Häufige Fragen

1. Wie kann ich eine Signatur automatisch einfügen?
Du kannst die Signatur aus deinem Outlook-Profil abrufen und an die HTMLBody-Variable anhängen. Dazu benötigst du jedoch zusätzliche VBA-Codierung.

2. Muss ich ein bestimmtes Outlook-Format verwenden?
Es ist empfehlenswert, Outlook 2016 oder neuer zu verwenden, um die besten Ergebnisse beim VBA-Mailversand und der Signaturintegration zu erzielen.

3. Wie kann ich den Code anpassen, um mehrere Empfänger hinzuzufügen?
Du kannst mehrere E-Mail-Adressen durch ein Komma in der To-Eigenschaft angeben: .To = "empfaenger1@example.com; empfaenger2@example.com".

4. Wo kann ich die Datei finden, die ich anhänge?
Stelle sicher, dass der Pfad in Const sPfad korrekt ist und die Datei tatsächlich an diesem Ort vorhanden ist.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige