Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Mail an alle email-adressen in Spalte

Mail an alle email-adressen in Spalte
Stefan
Hi Leute,
ich habe im Bereich D4:D... eine reihe von email adressen stehen und würde gerne ein paar Dinge per mail senden.
Ich habe auch schon einen Code dafür, jedoch bezieht sich dieser nur auf die zelle D4 für die email adresse.
Könnt ihr mir helfen, den Code so anzupassen, dass er als Empfänger alle email Adressen einträgt, die im Bereich D4:D ... stehen? Also ich möchte nur ein einziges Email verschicken, nicht an jeder Empfänger einzeln.
Das wär echt toll! :-)
Hier mein Code:
'InitializeOutlook = True
Set MyOutApp = CreateObject("Outlook.Application")
'Nachrichtenobject erstellen
Set MyMessage = MyOutApp.CreateItem(0)
With MyMessage
.To = mappe1.Worksheets(mappe1.Worksheets.Count).Cells(n, 4)
'oder auch eine Zellen-Angabe möglich
.Subject = "Lieferantenbewertung - Bitte um Durchführung"
'Attachment zugefügt
.Attachments.Add AWS
'Hier wird die HTML Mail erstellt
.Body = "Das ist ein Test." & vbCrLf & "Bitte ignorieren."
.Display
.Send

Dankeschööön! :)
Anzeige

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

Betreff
Benutzer
Anzeige
AW: Mail an alle email-adressen in Spalte
15.04.2011 09:10:07
Rudi
Hallo,
das musst du, soviel ich weiß, als Array übergeben.
Etwa so:
With Mappe1
With .Worksheets(.Worksheets.Count)
arrTo = WorksheetFunction.Transpose(.Range(.Cells(2, 4), .Cells(Rows.Count, 4).End(xlUp)))
End With
End With
With MyMessage
.To = arrTo
End With

Gruß
Rudi
Anzeige
AW: Mail an alle email-adressen in Spalte
15.04.2011 10:44:24
Stefan
Hi Rudi
hab versucht, deinen Array Vorschlag einzubauen, jedoch gibt er mir eine Fehlermeldung bei .to = arrto aus. "Die untere Array grenze muss null sein"
kannst du mir da helfen?
Hier mein code:
With ActiveWorkbook
'InitializeOutlook = True
Set MyOutApp = CreateObject("Outlook.Application")
'Nachrichtenobject erstellen
Set MyMessage = MyOutApp.CreateItem(0)
With .Worksheets(.Worksheets.Count)
arrTo = WorksheetFunction.Transpose(.Range(.Cells(3, 4), .Cells(Rows.Count, 4).End(xlUp)))
End With
With MyMessage
.To = arrTo
.Subject = "Lieferantenbewertung - Bitte um Durchführung"
'Attachment zugefügt
.Attachments.Add AWS
'Hier wird die HTML Mail erstellt
.Body = "Das ist ein Test." & vbCrLf & "Bitte ignorieren."
.Display
.Send
End With
End With

Anzeige
AW: Mail an alle email-adressen in Spalte
15.04.2011 09:21:24
Matthias
Hallo
Hier ne weiter Variante (hier D4:D5) - also letzte in D erst auslesen und die 5 evtl.anpassen (aktives Tabellenblatt!)
Set MyOutApp = CreateObject("Outlook.Application")
Set MyMessage = MyOutApp.CreateItem(0)
Dim myString$, n As Long
With MyMessage
.To = "Maxatweb.de"
For n = 4 To 5
myString = myString & ActiveSheet.Cells(n, 4).Value & ";"
Next
.cc = myString

.Subject = "Lieferantenbewertung - Bitte um Durchführung"
.Body = "Das ist ein Test." & vbCrLf & "Bitte ignorieren."
.Display
End With
Gruß Matthias
Anzeige
;

Forumthreads zu verwandten Themen

Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

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.

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Klicke auf Einfügen > Modul, um ein neues Modul zu erstellen.
  3. 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
  1. 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.
  2. 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.

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