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

Forumthread: E-Mail automatisch versenden

E-Mail automatisch versenden
25.03.2020 08:05:30
Tanja
Hallo zusammen,
ich habe eine Excel List und benötige jetzt ein VBA wie man ein automatisches E-Mail versendet.
Ich möchte gerne, wenn in "Tabelle 1" die Zelle mit dem Namen im Hintergrund grau oder rot aufscheint, dass die E-Mail Adresse der Person von Tabelle 3 verwendet wird.
Kann mir hier jemand bitte helfen?
Vielen Dank im Voraus!
Lg Tanja
Anzeige

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: E-Mail automatisch versenden
25.03.2020 08:38:23
Nepumuk
Hallo Tanja,
wodurch ändert sich die Hintergrundfarbe? In welchen Spalten findet das statt? Wie ist der Zusammenhang zwischen Namen und Mailadresse?
Gruß
Nepumuk
AW: E-Mail automatisch versenden
25.03.2020 08:56:25
Tanja
Hallo Nepumuk,
die Farbe ändert sich durch eine Formel, also das Makro sollte nach einer Farbe in Spalte D suchen und falls eine Farbe Vorhanden ist (egal ob rot oder grau) den Namen aus Spalte F verwenden, dieser in der selben Zeile steht und dadurch den selben Namen in Tabelle 3 suchen der in dem Fall in Spalte A steht und eine E-Mail Durch Outlook versenden diese in Spalte C steht. Allerdings soll ein PopUp der E-Mail kommen und diese sollte vor dem abschicken Bestätigt werden, um unnötige Testmails zu vermeiden.
Ich hoffe du kennst dich so ein bisschen besser aus!
Lg Tanja
Anzeige
AW: E-Mail automatisch versenden
25.03.2020 09:35:07
Nepumuk
Hallo Tanja,
im Prinzip so (In das Modul der Tabelle. Dazu Rechtsklick auf den Tabellenreiter - Code anzeigen):
Option Explicit

Private Sub Worksheet_Calculate()
    Dim objColorCell As Range, objNameCell As Range
    Dim objOutlook As Object, objMail As Object
    Set objOutlook = CreateObject(Class:="Outlook.Application")
    For Each objColorCell In Range(Cells(1, 4), Cells(Rows.Count, 4).End(xlUp))
        With objColorCell.DisplayFormat.Interior
            If .Color = RGB(255, 0, 0) Or .Color = RGB(166, 166, 166) Then
                Set objNameCell = Worksheets("Tabelle3").Columns(1).Find( _
                    What:=objColorCell.Offset(0, 2).Text, LookIn:=xlValues, LookAt:=xlWhole, MatchCase:=False)
                If Not objNameCell Is Nothing Then
                    Set objMail = objOutlook.CreateItem(0)
                    With objMail
                        .To = objNameCell.Offset(0, 2).Text
                        .Body = "Hallo" & vbLf & vbLf & "Mailtext" & vbLf & vbLf & "Gruß Tanja"
                        Call .Display
                    End With
                    Set objMail = Nothing
                    Set objNameCell = Nothing
                Else
                    Call MsgBox("Name: " & objColorCell.Offset(0, 2).Text & _
                        " nicht gefunden.", vbExclamation, "Hinweis")
                End If
            End If
        End With
    Next
    Set objOutlook = Nothing
End Sub

ABER, das Makro wird bei jeder Berechnung einer Formel in der Tabelle ausgelöst. Besser wäre es bei der Eingebe eines Wertes der die Färbung hervorruft. Also, wo gibst du was ein um die Färbung auszulösen?
Gruß
Nepumuk
Anzeige
AW: E-Mail automatisch versenden
25.03.2020 10:57:15
Tanja
Hallo Nepumuk,
meine Excel-Datei ist ausschließlich als Vorlage für jegliche Tabellen die ich in Zukunft erstellen möchte, mein Makro soll also nach einer Farbe suchen in "Tabelle1" und falls eine Vorhanden ist eine E-Mail versende durch de Auskunft des Namens der in der Spalte daneben steht. Die Mailadresse findet man in der "Tabelle3" jedoch sollte die E-Mail vorher bearbeitbar sein, also sie sollte wie angegeben noch nicht abgeschickt werden. Dieses Makro, dass ich erstellen will sollte also so sein dass man es beliebig bearbeiten kann und je nach Datei wo ich sie einfüge umwandelbar sein. Kannst du mir vielleicht eine Vorlage machen wo diese Angaben passen würden, aber da ich mich auch noch nicht so gut auskenne mit Makros gekennzeichnet ist welche Phrasen wandelbar sind mit Zeile, Spalte etc.?
Würd mich echt freuen, wenn du so ein Makro hin bekommst!
Lg Tanja
Anzeige
AW: E-Mail automatisch versenden
25.03.2020 11:03:04
Nepumuk
Hallo Tanja,
im Prinzip macht mein Makro das schon. Lade doch mal eine Mustermappe hoch damit ich das verifizieren kann. Dann schreib ich dir Kommentare zu jeder Zeile damit du das selber anpassen kannst.
Gruß
Nepumuk
AW: E-Mail automatisch versenden
25.03.2020 12:37:51
Tanja
Hallo Nepumuk,
anbei habe findest du die Mustermappe, hoffe du kannst mit dem etwas anfangen. Habe das Makro, dass du mir gesendet hast allerdings noch nicht hinzugefügt, da mir noch unklar ist wie ich es am besten umforme, dass es zu dieser Datei passt.
https://www.herber.de/bbs/user/136093.xlsm
Lg Tanja
Anzeige
AW: E-Mail automatisch versenden
25.03.2020 14:29:39
Nepumuk
Hallo Tanja,
leider hast du nicht geschrieben in welcher Zelle / Spalte die Eingabe erfolgt und die entsprechende Zelle in Spalte C zu färben. Daher ins Blaue:
Option Explicit

Private Sub Worksheet_Calculate()
    Dim objCell As Range, objNameCell As Range
    Dim objOutlook As Object, objMail As Object
    Set objOutlook = CreateObject(Class:="Outlook.Application")
    For Each objCell In Range(Cells(2, 4), Cells(Rows.Count, 4).End(xlUp))
        With objCell.Offset(0, -1).DisplayFormat.Interior
            If .Color = RGB(255, 0, 0) Or .Color = RGB(231, 230, 230) Then
                Set objNameCell = Worksheets("Einkäufer").Columns(1).Find( _
                    What:=objCell.Text, LookIn:=xlValues, LookAt:=xlWhole, MatchCase:=False)
                If Not objNameCell Is Nothing Then
                    Set objMail = objOutlook.CreateItem(0)
                    With objMail
                        .To = objNameCell.Offset(0, 2).Text
                        .Subject = "Betreff"
                        .Body = "Hallo" & vbLf & vbLf & "Mailtext" & vbLf & vbLf & "Gruß Tanja"
                        Call .Display
                    End With
                    Set objMail = Nothing
                    Set objNameCell = Nothing
                Else
                    Call MsgBox("Name: " & objCell.Offset(0, 2).Text & _
                        " nicht gefunden.", vbExclamation, "Hinweis")
                End If
            End If
        End With
    Next
    Set objOutlook = Nothing
End Sub

Gruß
Nepumuk
Anzeige
AW: E-Mail automatisch versenden
25.03.2020 15:21:22
Tanja
Hallo Nepumuk,
herzlichen Dank!
Du hast mir sehr weiter geholfen, das angegebene Makro funktioniert super.
Lg Tanja
;

Forumthreads zu verwandten Themen

Anzeige
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 automatisch versenden aus Excel mit Outlook


Schritt-für-Schritt-Anleitung

Um automatisch E-Mails aus Excel heraus zu versenden, benötigst du ein VBA-Makro. Hier ist eine einfache Anleitung:

  1. Öffne Excel und lade deine Tabelle.

  2. Drücke ALT + F11, um den VBA-Editor zu öffnen.

  3. Füge ein neues Modul hinzu: Rechtsklick im Projektfenster -> Einfügen -> Modul.

  4. Kopiere den folgenden Code in das Modul:

    Option Explicit
    
    Private Sub Worksheet_Calculate()
        Dim objColorCell As Range, objNameCell As Range
        Dim objOutlook As Object, objMail As Object
        Set objOutlook = CreateObject(Class:="Outlook.Application")
    
        For Each objColorCell In Range(Cells(1, 4), Cells(Rows.Count, 4).End(xlUp))
            With objColorCell.DisplayFormat.Interior
                If .Color = RGB(255, 0, 0) Or .Color = RGB(166, 166, 166) Then
                    Set objNameCell = Worksheets("Tabelle3").Columns(1).Find( _
                        What:=objColorCell.Offset(0, 2).Text, LookIn:=xlValues, LookAt:=xlWhole, MatchCase:=False)
    
                    If Not objNameCell Is Nothing Then
                        Set objMail = objOutlook.CreateItem(0)
                        With objMail
                            .To = objNameCell.Offset(0, 2).Text
                            .Body = "Hallo" & vbLf & vbLf & "Mailtext" & vbLf & vbLf & "Gruß Tanja"
                            .Display ' Pop-up zur Bearbeitung der E-Mail
                        End With
                        Set objMail = Nothing
                    Else
                        Call MsgBox("Name: " & objColorCell.Offset(0, 2).Text & " nicht gefunden.", vbExclamation, "Hinweis")
                    End If
                End If
            End With
        Next
        Set objOutlook = Nothing
    End Sub
  5. Schließe den VBA-Editor und speichere die Excel-Datei als Makro-fähige Datei (.xlsm).

  6. Teste das Makro, indem du die Zellen in Spalte D einfärbst.


Häufige Fehler und Lösungen

  • Fehler: E-Mail wird nicht angezeigt.

    • Lösung: Stelle sicher, dass Outlook installiert und konfiguriert ist. Prüfe auch, ob das Makro korrekt im richtigen Arbeitsblatt-Modul eingefügt wurde.
  • Fehler: Das Makro wird bei jeder Berechnung ausgelöst.

    • Lösung: Ändere den Trigger des Makros, sodass es nur bei einer spezifischen Eingabe in die Zelle aktiviert wird.

Alternative Methoden

  • Excel-Add-Ins: Es gibt Add-Ins, die das automatische Versenden von E-Mails aus Excel erleichtern.
  • Power Automate: Mit Microsoft Power Automate kannst du ebenfalls automatisierte E-Mails basierend auf Excel-Daten versenden.

Praktische Beispiele

  1. Tägliche E-Mails versenden: Du kannst das Makro so anpassen, dass es täglich zu einem festgelegten Zeitpunkt E-Mails versendet.
  2. Daten aus mehreren Tabellen: Das Makro kann erweitert werden, um Daten aus verschiedenen Tabellen zu aggregieren und in einer E-Mail zusammenzufassen.

Tipps für Profis

  • Verwende Fehlerbehandlungsroutinen, um sicherzustellen, dass das Makro auch bei unerwarteten Eingaben stabil bleibt.
  • Teste das Makro in einer Testumgebung, bevor du es in produktiven Dateien anwendest.
  • Halte den Code modular, um ihn einfacher anpassen zu können, wenn du die Struktur deiner Excel-Datei änderst.

FAQ: Häufige Fragen

1. Wie kann ich das Makro anpassen, um E-Mails mit Anhängen zu versenden?
Füge die Zeile .Attachments.Add "Pfad\zur\Datei" im .With objMail Block hinzu, um Dateien anzuhängen.

2. Funktioniert das Makro auch in Excel Online?
Nein, das Makro benötigt die Desktop-Version von Excel, da es auf VBA und Outlook zugreift.

3. Was tun, wenn ich keine E-Mail-Bestätigung haben möchte?
Entferne die Zeile .Display und ersetze sie durch .Send, um die E-Mail direkt zu versenden.

Mit dieser Anleitung kannst du E-Mails aus Excel automatisiert versenden und sie nach deinen Bedürfnissen anpassen.

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