Tutorial: Automatisierter Massen-E-Mail-Versand aus Excel mit individuellen Anhängen

Melden

Hier ist ein ausführliches Tutorial, wie du den E-Mail-Versand aus Excel heraus automatisierst. Wir konzentrieren uns primär auf die Lösung via VBA (Visual Basic for Applications) für Outlook, da dies die stabilste Methode für Anhänge ist.


Diese Anleitung zeigt dir, wie du eine Excel-Liste nutzt, um personalisierte E-Mails zu versenden, bei denen jeder Empfänger eine eigene Datei als Anhang erhält.

Schritt 1: Die Excel-Tabelle vorbereiten

Damit das Skript weiß, wohin die Reise geht, muss die Tabelle klar strukturiert sein. Erstelle folgende Spalten (Beispiel):

A: Name B: E-Mail-Adresse C: Betreff D: Dateipfad (Anhang) E: Textkörper
Max Mustermann max@beispiel.de Deine Rechnung C:\Rechnungen\Max.pdf Hallo Max, anbei...
Erika Schmidt erika@test.com Dein Zertifikat C:\Dokumente\Erika.pdf Liebe Erika, hier ist...

Wichtig: Der Dateipfad muss absolut sein (z.B. C:\Ordner\Datei.pdf).


Schritt 2: Den VBA-Editor öffnen

  1. Öffne deine Excel-Datei.
  2. Drücke ALT + F11, um den VBA-Editor zu öffnen.
  3. Gehe im Menü auf Einfügen -> Modul.
  4. Ein leeres weißes Fenster erscheint. Hier kopieren wir gleich den Code hinein.

Schritt 3: Verweise aktivieren (für Outlook)

Damit Excel mit Outlook kommunizieren kann:

  1. Klicke im VBA-Editor oben auf Extras -> Verweise.
  2. Suche in der Liste nach Microsoft Outlook XX.0 Object Library (XX variiert je nach installierter Version).
  3. Setze ein Häkchen und klicke auf OK.

Schritt 4: Der VBA-Code

Kopiere den folgenden Code in das leere Modulfenster:

Sub MassenEmailSenden()
    Dim OutlookApp As Object
    Dim OutlookMail As Object
    Dim i As Long
    Dim LetzteZeile As Long

    ' Outlook Instanz erstellen
    Set OutlookApp = CreateObject("Outlook.Application")

    ' Ermitteln, wie viele Zeilen gefüllt sind (Spalte A)
    LetzteZeile = Cells(Rows.Count, 1).End(xlUp).Row

    ' Schleife von Zeile 2 bis zur letzten Zeile
    For i = 2 To LetzteZeile
        Set OutlookMail = OutlookApp.CreateItem(0)

        With OutlookMail
            .To = Cells(i, 2).Value          ' Spalte B: E-Mail
            .Subject = Cells(i, 3).Value     ' Spalte C: Betreff
            .Body = Cells(i, 5).Value        ' Spalte E: Nachricht

            ' Anhang hinzufügen (Spalte D)
            If Cells(i, 4).Value <> "" Then
                .Attachments.Add Cells(i, 4).Value
            End If

            ' .Display zeigt die Mail an (zum Testen)
            ' .Send sendet die Mail direkt
            .Display 
        End With
    Next i

    MsgBox "Versand abgeschlossen!", vbInformation

    Set OutlookMail = Nothing
    Set OutlookApp = Nothing
End Sub

Schritt 5: Das Skript ausführen

  1. Gehe zurück in dein Excel-Tabellenblatt.
  2. Drücke ALT + F8.
  3. Wähle MassenEmailSenden aus und klicke auf Ausführen.
  4. Tipp: Nutze am Anfang .Display im Code. So kannst du prüfen, ob alles korrekt geladen wurde. Wenn du sicher bist, ändere es in .Send.

Besonderheiten für Gmail-Nutzer

Wenn du Gmail statt Outlook verwenden möchtest, gibt es zwei Wege:

  1. Outlook mit Gmail-Konto: Verknüpfe dein Gmail-Konto einfach mit der Outlook-Desktop-App. Das obige Skript funktioniert dann weiterhin problemlos.
  2. Direkt über SMTP (ohne Outlook): Dies ist deutlich komplexer, da Google "weniger sichere Apps" blockiert. Du müsstest in deinem Google-Konto ein App-Passwort erstellen und ein spezielles CDO-Skript in VBA verwenden.
    • Empfehlung: Der Weg über die Outlook-App ist für Excel-Nutzer der einfachste und sicherste Weg.

Fehlerbehebung & Tipps

  • Pfadfehler: Prüfe, ob die Dateipfade in Spalte D exakt stimmen. Ein fehlender Backslash oder ein Tippfehler führt zum Abbruch.
  • Sicherheitswarnung: Outlook fragt manchmal nach, ob ein Programm E-Mails senden darf. Dies kann man in den Outlook-Optionen unter "Trust Center" deaktivieren (nur empfohlen, wenn ein Antivirus aktiv ist).
  • Personalisierung: Du kannst den .Body im Code verfeinern, z.B.: .Body = "Hallo " & Cells(i, 1).Value & "," & vbCrLf & Cells(i, 5).Value (Dies fügt automatisch den Namen aus Spalte A vor den Textkörper ein).

Speichern nicht vergessen: Speichere deine Excel-Datei als Excel-Arbeitsmappe mit Makros (.xlsm), sonst geht der Code beim Schließen verloren!

0