E-Mail an alle E-Mail-Adressen in Excel versenden
Schritt-für-Schritt-Anleitung
Um E-Mail-Adressen aus Excel in eine E-Mail einzufügen und an alle Empfänger gleichzeitig zu senden, kannst Du den folgenden VBA-Code verwenden. Dieser Code geht davon aus, dass Deine E-Mail-Adressen in der Spalte D beginnen, ab D4.
- Öffne Excel und drücke
ALT + F11
, um den VBA-Editor zu öffnen.
- Klicke auf
Einfügen
> Modul
, um ein neues Modul zu erstellen.
- Füge den folgenden Code ein:
Sub SendMailToAll()
Dim MyOutApp As Object
Dim MyMessage As Object
Dim arrTo As Variant
Dim n As Long
Dim myString As String
' Outlook-Anwendung initialisieren
Set MyOutApp = CreateObject("Outlook.Application")
Set MyMessage = MyOutApp.CreateItem(0)
' E-Mail-Adressen aus Excel lesen
With ActiveWorkbook.Worksheets(1)
arrTo = WorksheetFunction.Transpose(.Range(.Cells(4, 4), .Cells(Rows.Count, 4).End(xlUp)))
End With
' E-Mail zusammenstellen
With MyMessage
.To = Join(arrTo, ";") ' E-Mail-Adressen verketten
.Subject = "Lieferantenbewertung - Bitte um Durchführung"
.Body = "Das ist ein Test." & vbCrLf & "Bitte ignorieren."
.Display ' Zeigt die E-Mail zur Überprüfung an
'.Send ' Sende die E-Mail direkt
End With
' Aufräumen
Set MyMessage = Nothing
Set MyOutApp = Nothing
End Sub
- Passe den Bereich
.Range(.Cells(4, 4), .Cells(Rows.Count, 4).End(xlUp))
an, wenn Deine E-Mail-Adressen in einer anderen Zeile oder Spalte stehen.
- Schließe den VBA-Editor und führe das Makro
SendMailToAll
aus.
Häufige Fehler und Lösungen
-
Fehlermeldung: "Die untere Array Grenze muss null sein"
Diese Fehlermeldung tritt auf, wenn der Array arrTo
nicht korrekt initialisiert ist. Stelle sicher, dass Du den Bereich korrekt angibst und dass tatsächlich E-Mail-Adressen vorhanden sind.
-
E-Mail wird nicht gesendet
Wenn Du die E-Mail nicht direkt senden möchtest, stelle sicher, dass der .Display
-Befehl verwendet wird. Um die E-Mail direkt zu senden, kannst Du .Send
anstelle von .Display
verwenden.
Alternative Methoden
Eine andere Methode, E-Mail-Adressen aus Excel zu verketten, besteht darin, die Adressen manuell in eine Variable zu speichern:
Dim myString As String
For n = 4 To 5 ' Passe diese Zeilen an
myString = myString & ActiveSheet.Cells(n, 4).Value & ";"
Next
Du kannst dann myString
im .To
-Feld verwenden. Diese Methode ist besonders nützlich, wenn Du zusätzliche E-Mail-Adressen hinzufügen möchtest.
Praktische Beispiele
Hier ist eine praktische Anwendung, die die E-Mail-Adressen in der Spalte D (D4:D5) ausliest und an die E-Mail anhängt:
Sub SendMailWithCC()
Dim MyOutApp As Object
Dim MyMessage As Object
Dim myString As String
Dim n As Long
Set MyOutApp = CreateObject("Outlook.Application")
Set MyMessage = MyOutApp.CreateItem(0)
For n = 4 To 5 ' Passe diese Zeilen an
myString = myString & ActiveSheet.Cells(n, 4).Value & ";"
Next
With MyMessage
.To = "empfaenger@example.com"
.CC = myString ' E-Mail-Adressen als CC hinzufügen
.Subject = "Lieferantenbewertung - Bitte um Durchführung"
.Body = "Das ist ein Test." & vbCrLf & "Bitte ignorieren."
.Display
End With
Set MyMessage = Nothing
Set MyOutApp = Nothing
End Sub
Tipps für Profis
-
E-Mail-Adressen aus Excel in Outlook BCC einfügen
Wenn Du die E-Mail-Adressen aus Excel in das BCC-Feld einfügen möchtest, kannst Du einfach die Zeile .BCC = myString
hinzufügen.
-
E-Mail-Adressen Excel erkennen
Stelle sicher, dass die E-Mail-Adressen in einem gültigen Format sind. Du kannst auch die Funktion IsError
verwenden, um ungültige Adressen zu filtern.
FAQ: Häufige Fragen
1. Wie kann ich die E-Mail-Adressen aus Excel in eine HTML-Mail einfügen?
Du kannst das .HTMLBody
-Attribut anstelle von .Body
verwenden, um HTML-Inhalte in die E-Mail einzufügen.
2. Was mache ich, wenn einige Zellen leer sind?
Stelle sicher, dass Du einen Filter hinzufügst, um leere Zellen zu ignorieren, bevor Du die E-Mail-Adressen in das Array einfügst.