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

Forumthread: VBA mehrere E-Mail erstellen

VBA mehrere E-Mail erstellen
13.11.2019 07:35:44
kultnoob
Guten Morgen zusammen,
hoffe allen geht es gut. Wende mich an euch für ein wenig Hilfe. :-)
In einer Excel sind E-Mailadressen enthalten. Diese kann ich mit unten aufgeführten Code in Outlook übertragen und eine E-Mail öffnet sich. Soweit so gut. Nun zu meiner eigentlichen Frage.
Wenn ich innerhalb der Excel-Datei mehrere Einträge habe, an die eine E-Mail erstellt werden soll, wird immer die gleiche E-Mail verwendet und nur die E-Mailadresse im Feld "AN" ergänzt.
Besteht die Möglichkeit, dass für jede Zeile, welche die Bedingung erfüllt, eine "NEUE" E-Mail erstellt wird? Ja, wenn ich 20 E-Mails versenden muss, dann habe ich 20 nicht versendete E-Mails offen. Dies ist mir bewusst aber gewünscht.

Sub E_Mail()
Dim objOutlook As Object
Dim objE_Mail As Object
Dim EMail As String
Set objOutlook = CreateObject("Outlook.Application")
'CreateItem 0 = E-Mail, wenn eine 1 gewählt wird, wird eine Outlook-Einladung erstellt
Set objE_Mail = objOutlook.CreateItem(0)
if ...
EMail = "TEXT" 'in HTML
With objE_Mail
'Den Wert der Variable Adresse im Feld "AN" der Einladung eingeben
Set myRequiredAttendee = .Recipients.Add(Cells(a, Mail).Value)
'HTMLBody gibt den Text farblich wieder
.HTMLBody = EMail
'Betreff einfügen
.Subject = "Bitte um dringende Rückmeldung"
'Neue E-Mail in Outlook öffnen
.Display
'Wichtigkeitsstufe im Outlook festlegen
.Importance = olImportanceHigh
End With
end if
Vom Verständnis her könnte ich mir vorstellen, dies in einer Schleife zu realisieren. Nur wie mache ich das mit einer E-Mail?
Freue mich über jegliche Unterstützung und bedanke mich bei allen.
Grüße
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: VBA mehrere E-Mail erstellen
13.11.2019 08:09:14
Klaus
Hallo Kultnoob,
im Prinzip so - ich weiss natürlich nicht wo deine Mailadressen und Bedingungen stehen, das musst du anpassen.
Ist Set myRequiredAttendee richtig als "MailTo-Adresse"? Ich kanns nicht testen, hab hier kein Outlook aber laut meiner eigenen Makrosammlung müsste die Zeile objE_Mail.To lauten.
Sub Mails20()
For a = 1 To 20
'deine Bedingung ist zum Beispiel, in Spalte H steht "ja"
If Cells(a, 8).Value = "ja" Then
'Die Mailadresse steht in Spalte I
Call E_Mail(Cells(a, 9).Value)
End If
Next a
End Sub
Sub E_Mail(TOMail As String)
Dim objOutlook As Object
Dim objE_Mail As Object
Dim EMail As String
Set objOutlook = CreateObject("Outlook.Application")
'CreateItem 0 = E-Mail, wenn eine 1 gewählt wird, wird eine Outlook-Einladung erstellt
Set objE_Mail = objOutlook.CreateItem(0)
EMail = "TEXT" 'in HTML
With objE_Mail
'Den Wert der Variable Adresse im Feld "AN" der Einladung eingeben
Set myRequiredAttendee = .Recipients.Add(TOMail)
'HTMLBody gibt den Text farblich wieder
.HTMLBody = EMail
'Betreff einfügen
.Subject = "Bitte um dringende Rückmeldung"
'Neue E-Mail in Outlook öffnen
.Display
'Wichtigkeitsstufe im Outlook festlegen
.Importance = olImportanceHigh
End With
End Sub

Anzeige
AW: VBA mehrere E-Mail erstellen
13.11.2019 08:49:34
kultnoob
Hi Klaus,
yeahh super... es funktioniert. Gut die Logik erschließt sich mir nun. Vielen Dank für die Hilfe.
Zu Deiner Frage...
objE_Mail.To
Habe es nicht geändert, da es funktioniert. Falls Du dich darauf beziehst.

Set objOutlook = CreateObject("Outlook.Application")
'CreateItem 0 = E-Mail, wenn eine 1 gewählt wird, wird eine Outlook-Einladung erstellt
Set objE_Mail = objOutlook.CreateItem(0)
Muss nur noch eine Variable von ersten Sub in den zweiten übergeben. Dann läuft es soweit. :-)
Vielen Dank und einen schönen Tag.
Grüße
Anzeige
Danke für die Rückmeldung! owT.
13.11.2019 09:48:07
Klaus
.
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

E-Mails mit VBA in Excel erstellen


Schritt-für-Schritt-Anleitung

Um mehrere E-Mails in Outlook über Excel zu erstellen, kannst du den folgenden VBA-Code verwenden. Dieser Code durchläuft die Zeilen einer Excel-Tabelle und erstellt für jede Zeile, die die Bedingung erfüllt, eine neue E-Mail. Du kannst den Code anpassen, je nachdem, wo sich deine E-Mail-Adressen befinden.

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Füge ein neues Modul ein (Einfügen > Modul).
  3. Kopiere und füge den folgenden Code in das Modul ein:
Sub Mails20()
    Dim a As Integer
    For a = 1 To 20
        ' Überprüfe die Bedingung, hier steht "ja" in Spalte H
        If Cells(a, 8).Value = "ja" Then
            ' E-Mail-Adresse steht in Spalte I
            Call E_Mail(Cells(a, 9).Value)
        End If
    Next a
End Sub

Sub E_Mail(TOMail As String)
    Dim objOutlook As Object
    Dim objE_Mail As Object
    Dim EMail As String
    Set objOutlook = CreateObject("Outlook.Application")
    Set objE_Mail = objOutlook.CreateItem(0) ' 0 für E-Mail

    EMail = "<h1>HTML-Nachricht</h1>" ' Beispiel für HTML-Inhalt
    With objE_Mail
        .To = TOMail
        .HTMLBody = EMail
        .Subject = "Bitte um dringende Rückmeldung"
        .Display ' E-Mail anzeigen
        .Importance = 2 ' Hoch
    End With
End Sub
  1. Passe die Bedingungen und die Spaltennummern nach Bedarf an.
  2. Führe das Makro Mails20 aus, um die E-Mails zu generieren.

Häufige Fehler und Lösungen

  • Problem: E-Mail wird nicht gesendet.

    • Lösung: Stelle sicher, dass Outlook korrekt installiert und konfiguriert ist. Der Code öffnet nur die E-Mail, aber sendet sie nicht automatisch. Du musst sie manuell senden.
  • Problem: E-Mail-Adresse wird nicht erkannt.

    • Lösung: Überprüfe, ob die E-Mail-Adressen in der richtigen Spalte und im richtigen Format vorliegen.
  • Problem: E-Mails erscheinen nicht in der gewünschten Anzahl.

    • Lösung: Überprüfe die Schleife und die Bedingungen, um sicherzustellen, dass sie korrekt sind.

Alternative Methoden

Falls du keine VBA verwenden möchtest, kannst du auch die Funktion "Serienbrief" in Word nutzen, um E-Mails zu generieren. Du musst die E-Mail-Adressen in einer Excel-Tabelle haben und kannst diese dann in Word importieren.


Praktische Beispiele

Wenn du eine Liste von E-Mail-Adressen in Spalte I hast und in Spalte H überprüfst, ob eine E-Mail gesendet werden soll (z.B. wenn "ja" drin steht), kannst du den oben genannten Code verwenden, um automatisch E-Mails zu erstellen.

Beispiel für eine Excel-Tabelle:

H I
ja test1@domain.com
nein test2@domain.com
ja test3@domain.com

Der Code wird nur E-Mails für die Adressen in Zeile 1 und 3 erstellen.


Tipps für Profis

  • Nutze HTML, um ansprechende E-Mails zu gestalten. Du kannst Bilder, Links und Formatierungen einfügen.
  • Überlege dir, die E-Mails automatisch zu senden, indem du .Send anstelle von .Display verwendest, aber sei vorsichtig, da dies nicht rückgängig gemacht werden kann.
  • Teste den Code immer mit einer kleinen Anzahl an E-Mail-Adressen, bevor du es auf große Datenmengen anwendest.

FAQ: Häufige Fragen

1. Wie kann ich mehrere E-Mail-Adressen in das "AN"-Feld eingeben?
Du kannst die E-Mail-Adressen durch Semikolons trennen, z.B. .To = "email1@domain.com; email2@domain.com".

2. Kann ich den Inhalt der E-Mail aus einer Zelle in Excel beziehen?
Ja, du kannst die Zelle direkt in den HTMLBody einfügen, z.B. .HTMLBody = Cells(a, 10).Value, wenn der Inhalt in Spalte J steht.

3. Funktioniert dieser Code in allen Excel-Versionen?
Der Code sollte in den meisten modernen Excel-Versionen (Excel 2010 und neuer) funktionieren, die VBA und Outlook unterstützen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige