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

Forumthread: E-Mail aus excel an mehrere Empfänger

E-Mail aus excel an mehrere Empfänger
22.10.2015 11:43:00
Benni
Hallo zusammen,
ich bin neu im Forum und auch ein ziemlicher VBA-Neuling und habe mir folgenden Code zusammengesucht und angepasst. Dieser funktioniert auch einwandfrei, allerdings würde ich die E-Mails gerne an mehrere Empfänger senden (Die Email-Adressen sind ab Zelle (I12) abwärts hinterlegt. Das bekomme ich allerdings nicht hin.
Ich wäre für jede Hilfe sehr dankbar!
Sub lotus()
Dim sText As Variant, sEmpfang As String, sBetrifft As String
Dim session As Object, db As Object, doc As Object, rtobject, ws As Object
Dim i As Integer, y As Integer, Msg As Integer
Dim sKopie As String, AttachMe As Object, DerAnhang As Object
Dim user As String, server As String, mailfile As String, sBlindKopie As String
Dim vAn As Variant, vCopy As Variant, vBlind As Variant, sAnhang As String
On Error GoTo Fehler
sText = Range("B4") & vbCrLf ' Text aus Zelle (B4)
sText = Replace(sText, vbCrLf, Chr(10)) ' Zeilenumbrüche ändern
sEmpfang = Worksheets("Tabelle1").Range("I12" & x).Value
sBetrifft = Range("B3") 'Überschrift aus Zelle (b3)
'Wenn du keine Kopie od Blindkopie versenden willst, dann grad weglassen
sKopie = Range("D3") ' aus E-Mail-Adress in Zelle (D3)
'sBlindKopie = "Email1 ; Email2 " ' Einträge durch " ; " getrennt
vAn = Split(sEmpfang, " ; ") ' Empfänger Array
sAnhang = Range("B6") ' Muss natürlich richtig gesetzt werden
sAnhang2 = Range("B7")
sAnhang3 = Range("B8")
If Len(sKopie) > 0 Then vCopy = Split(sKopie, " ; ") 'cc Array
If Len(sBlindKopie) > 0 Then vBlind = Split(sBlindKopie, " ; ")  'bcc Array
Set session = CreateObject("notes.notessession") ' Notes muss gestartet sein
user = session.UserName
server = session.GetEnvironmentString("MailServer", True)
mailfile = session.GetEnvironmentString("MailFile", True)
Set db = session.getdatabase(server, mailfile)
Set doc = db.createdocument()
doc.Form = "Memo"
doc.SendTo = sEmpfang  ' an array
If Len(sKopie) > 0 Then doc.CopyTo = vCopy 'cc Array
If Len(sBlindKopie) > 0 Then doc.blindcopyto = vBlind 'bcc Array
doc.Subject = sBetrifft ' die Betreffzeile
doc.SAVEMESSAGEONSEND = True
doc.PostedDate = Now
'Die Zeilen mit dem Anhang nach hier oben verschieben, ist wichtig die Reihenfolge
If sAnhang  "" Then
Set AttachMe = doc.CREATERICHTEXTITEM("Attachment")
Set DerAnhang = AttachMe.EMBEDOBJECT(1454, "", sAnhang)
Set DerAnhang2 = AttachMe.EMBEDOBJECT(1454, "", sAnhang2)
Set DerAnhang3 = AttachMe.EMBEDOBJECT(1454, "", sAnhang3) ',"Attachment" wird nicht benö _
_
_
tigt
End If
Set ws = CreateObject("Notes.NotesUIWorkspace") ' **durch das öffnen des Dokumentes durch    _
_
_
NotesUIWorkspace**
Call ws.EDITDOCUMENT(True, doc)             ' **erreicht man das die eingestellte Signatur   _
_
_
aus den    **
Set doc = ws.CURRENTDOCUMENT                      ' **Lotus Notes Optionen eingefügt wird    _
_
_
Call doc.GOTOFIELD("Body")
Call doc.insertText(sText)
Call doc.Send(True)
Call doc.Close               'Schliesst das gesendete Formular
Call doc.Save(True, True)
Aufraeumen:
On Error Resume Next
Set AttachMe = Nothing
Set DerAnhang = Nothing
Set ws = Nothing
Set doc = Nothing
Set db = Nothing
Set session = Nothing
Exit Sub
Fehler:
Resume Aufraeumen
End Sub

Viele Grüße
Benni

Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: E-Mail aus excel an mehrere Empfänger
22.10.2015 12:07:02
Martin
Hallo Benni,
ein Schnellschußversuch, weil ich jetzt keine Zeit habe mich in Ruhe damit zu beschäftigen. Ersetze diese Zeile:
vAn = Split(sEmpfang, " ; ") ' Empfänger Array
durch folgende Zeile:
vAn = Application.Transpose(Range(Cells(12, 9), Cells(Cells(Rows.Count, 9).End(xlUp).Row, 9)))
Viele Grüße
Martin

Anzeige
AW: E-Mail aus excel an mehrere Empfänger
22.10.2015 13:06:12
Benni
Hallo Martin,
vielen Dank für deine schnelle Antwort.
Ich habe es getestet und die E-Mail wird immer nur an die erste E-Mail Adresse gesendet, an die zweite allerdings dann leider nicht mehr...
An was kann das liegen?
Vielen Dank im Voraus
Grüße
Benni

AW: E-Mail aus excel an mehrere Empfänger
22.10.2015 16:13:56
Benni
Hallo Martin,
habe es hinbekommen, habe sEmpfang As String in sEmpfang As variant geändert
Danke dir noch einmal!
Viele Grüße
Benni

Anzeige
AW: E-Mail aus excel an mehrere Empfänger
22.10.2015 18:22:16
Martin
Hallo Benni,
bin wieder zurück. Ich freue mich, dass es jetzt klappt. Gerade habe ich mir den Code noch einmal in Ruhe angesehen und wundere mich, dass die Variant-Variable vAn anscheinend keinerlei Bedeutung hat. Eigentlich kann die Variable sEmpfang komplett gelöscht werden. Zudem muss eigentlich noch die Zeile
doc.SendTo = sEmpfang  ' an array
ersetzt werden durch
doc.SendTo = Join(vAn, "; ")  ' an array
Naja, wenn es bei dir läuft, dann ist ja alles gut.
Viele Grüße
Martin

Anzeige
AW: E-Mail aus excel an mehrere Empfänger
23.10.2015 08:05:25
Benni
Guten Morgen Martin,
ich habe erst jetzt wieder Zugrifff auf Lotus Notes. Habe es geändert und funktioniert 1A , danke :)
Kennst du zufällig auch eine Möglichgeit, dass die E-Mail an alle Empfänger einzel gesendet wird?
Im Moment können die Empfänger noch sehen, wer die E-Mail auch bekommen hat, dies würde ich gerne ausschließen, ohne die e-mail in Blindkopie zu versenden
Viele Grüße
Benni
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

E-Mail aus Excel an mehrere Empfänger versenden


Schritt-für-Schritt-Anleitung

Um eine E-Mail an mehrere Empfänger aus Excel zu versenden, kannst du das folgende VBA-Makro verwenden. Dieses Makro geht davon aus, dass die E-Mail-Adressen in der Spalte I ab Zelle I12 aufgelistet sind.

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu starten.
  2. Füge ein neues Modul hinzu, indem du mit der rechten Maustaste auf "VBAProject (DeineDatei.xlsx)" klickst und "Einfügen" > "Modul" auswählst.
  3. Kopiere den folgenden Code in das Modul:
Sub eMailAnMehrereEmpfaenger()
    Dim sText As Variant, vAn As Variant
    Dim i As Integer
    Dim sBetrifft As String
    Dim session As Object, db As Object, doc As Object

    ' Text und Betreff aus Zellen
    sText = Range("B4") & vbCrLf
    sBetrifft = Range("B3")

    ' Empfänger aus Spalte I
    vAn = Application.Transpose(Range(Cells(12, 9), Cells(Cells(Rows.Count, 9).End(xlUp).Row, 9)))

    ' Lotus Notes Setup
    Set session = CreateObject("notes.notessession")
    Set db = session.getdatabase(session.GetEnvironmentString("MailServer", True), session.GetEnvironmentString("MailFile", True))
    Set doc = db.createdocument()
    doc.Form = "Memo"

    ' E-Mail an mehrere Empfänger
    doc.SendTo = Join(vAn, "; ")
    doc.Subject = sBetrifft
    Call doc.GOTOFIELD("Body")
    Call doc.insertText(sText)
    Call doc.Send(True)

    ' Aufräumen
    Set doc = Nothing
    Set db = Nothing
    Set session = Nothing
End Sub
  1. Schließe den VBA-Editor und kehre zu Excel zurück.
  2. Führe das Makro aus, um die E-Mail an alle Empfänger zu senden.

Häufige Fehler und Lösungen

  • Problem: E-Mail wird nur an die erste Adresse gesendet.

    • Lösung: Stelle sicher, dass die Variable sEmpfang als Variant deklariert ist, um mehrere E-Mail-Adressen zu unterstützen. Verwende doc.SendTo = Join(vAn, "; ") für das Senden an alle Empfänger.
  • Problem: E-Mail-Adressen sind nicht korrekt formatiert.

    • Lösung: Überprüfe, ob die E-Mail-Adressen in der Spalte I korrekt und ohne zusätzliche Leerzeichen eingegeben sind.

Alternative Methoden

Eine alternative Methode ist die Verwendung von mailto:-Links. Du kannst eine Schaltfläche in Excel hinzufügen, die beim Klicken einen E-Mail-Client öffnet, um E-Mails an mehrere Empfänger zu senden:

Sub MailtoLink()
    Dim Empfaenger As String
    Empfaenger = Join(Application.Transpose(Range("I12:I" & Cells(Rows.Count, 9).End(xlUp).Row)), "; ")
    ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="mailto:" & Empfaenger & "?subject=Betreff&body=Nachricht"
End Sub

Praktische Beispiele

Wenn du die E-Mail an mehrere Empfänger aus Excel versenden möchtest, kannst du die folgenden Beispiele verwenden:

  1. E-Mail an alle Empfänger:

    • Code: Siehe Schritt-für-Schritt-Anleitung.
    • Anwendung: Gut geeignet, wenn die Empfänger die E-Mail-Adressen der anderen nicht sehen müssen.
  2. E-Mail in Blindkopie:

    • Um E-Mails in Blindkopie (BCC) zu senden, kannst du die Zeile doc.BlindCopyTo = Join(vBlind, "; ") hinzufügen, wenn du die BCC-Adressen in einer separaten Zelle hast.

Tipps für Profis

  • Verwende die Funktion Application.DisplayAlerts = False, um Dialogfelder während der Ausführung des Makros zu unterdrücken.
  • Teste dein Makro immer mit einer kleinen Anzahl an Empfängern, bevor du es für alle Kontakte ausführst.
  • Achte darauf, dass die Blindkopie bei Mails 3 Buchstaben korrekt eingerichtet ist, wenn du BCC verwenden möchtest.

FAQ: Häufige Fragen

1. Wie sende ich E-Mails an alle Empfänger ohne, dass sie die anderen sehen?
Du kannst die Empfänger in der BCC-Zeile angeben, anstatt sie in der TO-Zeile zu verwenden.

2. Kann ich Anhänge über das Makro versenden?
Ja, du kannst Anhänge hinzufügen, indem du die entsprechenden Zeilen zum Erstellen eines RichTextItem in deinem Makro einfügst.

3. Welche Excel-Version wird benötigt?
Dieses Makro sollte in den meisten modernen Excel-Versionen funktionieren, die VBA unterstützen.

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