Mit VBA Email versenden ohne Outlook

Mit VBA Email versenden ohne Outlook

Im ersten Teil wurde der Emailversand mit Outlook erklärt. Bei dieser Variante gibt es sehr viele Optionen um den Emailversand optimal anzupassen. Eine Email mit ganz einfachen Funktionen kann aber auch ohne die Nutzung von Microsoft Outlook sehr einfach und schnell versendet werden.

Teil 1: Per VBA-Makro eine Email mit Outlook versenden
Teil 2: Mit VBA Email versenden ohne Outlook

Email mit FollowHyperlink erzeugen

Die Methode über einen Mailto-Hyperlink ist eine sehr einfache Möglichkeit zum Erzeugen einer Email, allerdings auch mit einem eingeschränkten Funktionsumfang.

Gleich Vorweg, Dateianhänge lassen sich auf diese Weise nicht versenden. Auch an Formatierungen braucht man hier nicht zu denken. Es können einzig simple Textnachrichten versendet werden.

Unterstützt wird der Email-Versand an eine oder mehrere Emailadressen. Auch Kopie-Empfänger (CC) und Blindkopie-Empfänger (BCC) stehen zur Verfügung. Zusätzlich kann der Betreff und die eigentliche Textnachricht innerhalb des FollowHyperlink-Befehls übergeben werden.

Die Email wird jedoch nur für den Versand vorbereitet. Gesendet wird die Emailnachricht vom Anwender anschließend, wie bei selbst erstellten Emails, über den Button „Senden“ im jeweils genutzten Emailprogramm.

Der VBA Code kann sowohl mit Outook, als auch mit den meisten alternativen Mail-Programmen genutzt werden.

Sub Email_senden()

Dim strEmailadresse As String
Dim strCc As String
Dim strBcc As String
Dim strSubject As String
Dim strBody As String

strEmailadresse = "email@domain.de"
strCc = "email@domain.de"
strBcc = "email@domain.de"
strSubject = "Betreff"
strBody = "Emailtext"

ActiveWorkbook.FollowHyperlink Address:="mailto:" & strEmailadresse & _
                            "?subject=" & strSubject & _
                            "&cc=" & strCc & _
                            "&bcc=" & strBcc & _
                            "&body=" & strBody

End Sub

Sonderzeichen im Emailtext

Zu beachten ist zudem, dass einige Sonderzeichen im Emailtext noch mit Hexadezimal-Code zu ersetzen sind. Dafür eignet sich die Funktion Replace() innerhalb des VBA-Codes oder der Text wird direkt mit den entsprechenden Hexadezimal-Codes bereitgestellt. Ansonsten kann die Erstellung der Email auch zu Problemen führen.

Leerzeichen können mit der Funktion z.B. wie folgt ersetzt werden:

Replace("Emailtext der Nachricht", " ", "%20")

Email mit der SendMail-Methode

Mit dieser Variante kann die Arbeitsmappe an einen oder mehrere Empfänger versendet werden. Für mehrere Email-Empfänger ist ein Array zu erstellen.

Array("email1@domain.de", "email2@domain.de")

Zusätzlich kann noch ein Betreff für die Nachricht gewählt werden. Wird kein Betreff angegeben, wird der Dateiname als Betreff verwendet.

Sub Datei_senden()

Dim strEmailadresse As String
Dim strSubject As String

strEmailadresse = "email@domain.de"
strSubject = "Betreff"

ActiveWorkbook.SendMail Recipients:=strEmailadresse, Subject:=strSubject

End Sub

Der Versand der Email ist anschließend noch zu bestätigen. Je nach genutzten Emailprogramm wird eine Sicherheitsabfrage für die Bestätigung angezeigt.

Teil 1: Per VBA-Makro eine Email mit Outlook versenden
Teil 2: Mit VBA Email versenden ohne Outlook

 
Gefällt Ihnen der Beitrag?

2 Gedanken zu “Mit VBA Email versenden ohne Outlook

  1. Guten Morgen,

    ich hoffe man kann mir schnell weiter helfen.
    Vorab, bin Anfänger :D.
    Der Code passt soweit und das versenden klappt auch, wie muss der Befehl denn umgeändert werden, wenn ich zB eine ganze Spalte mit Email Adressen habe und die Email an alle Email Adressen rausgeschickt werden soll die sich innerhalb der Spalten (nehmen wir mal C1 -> C10) befinden?

    Danke schonmal im Voraus für die Hilfe 🙂

  2. Guten Morgen Lukasz,

    dazu benötigst man eine Schleife.
    Die E-Mail Adressen werden dann Zeile für Zeile ausgelesen.

    Sub Multi_Mail()

    Dim strEmailadresse As String
    Dim strSubject As String
    Dim i As Integer

    strSubject = „Betreff“

    For i = 1 To 10
    strEmailadresse = Range(„C“ & i).Value
    ActiveWorkbook.SendMail Recipients:=strEmailadresse, Subject:=strSubject
    Next i

    End Sub

Schreibe einen Kommentar

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.