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

Automatische Erinnerungsmail senden

Forumthread: Automatische Erinnerungsmail senden

Automatische Erinnerungsmail senden
08.06.2022 21:21:49
Max
Hallo,
ich habe seit einigen Wochen ein Problem, dass ich nicht lösen kann und auch nach intensiver Recherche keine Lösung gefunden, die ich umsetzen kann.
Folgendes:
Es soll erstmals 14 Tage nach einem bestimmten Datum (Auftragsdatum, steht bereits in einer Zelle) eine Mail mit Textvorlage in meinem Standard-Mailprogramm verfasst werden, die dann über den Senden-Button abgeschickt werden kann.
Die Variablen im Mailtext sollen sich automatisch anpassen (ähnlich SVerweis), diese sind auch aus bestehenden Zellen auslesbar.
Aktuell kann ich das, aber nur manuell über die HYPERLINK-Formel (mailto…) Es soll aber automatisiert werden.
Wenn die Mail erstmals nach 14 Tagen verfasst wurde, soll danach alle 7 Tage eine weitere Erinnerungsmail verfasst werden. Das soll so lange laufen, bis in einer anderen Zelle ein Wareneingangsdatum eingetragen wurde.
Vermutlich ist hier VBA nötig, und da hört es bei mir auf. :-(
Viele Grüße
Max
Anzeige

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Automatische Erinnerungsmail senden
09.06.2022 08:46:41
UweD
Hallo
ja, mit VBA möglich.
Bevor wir jetzt hier deine bestehende Datei nachbauen (und die dann anders aussieht als Deine) lade doch mal eine abgespeckte Musterdatei hoch.
LG UweD
AW: Automatische Erinnerungsmail senden
09.06.2022 12:46:05
Max
Hallo Uwe,
Vielen Dank für deine Reaktion.
Hier die Musterdatei: https://www.herber.de/bbs/user/153488.xlsx
Besten Dank schonmal für deine Zeit.
LG Max
Anzeige
AW: Automatische Erinnerungsmail senden
09.06.2022 16:49:50
UweD
Hallo nochmal
- die Spalte O wird nicht mehr gebraucht und für das merken des letzten Benachrichtigungsdatums verwendet
- mach Sie deshalb bitte einmal komplett leer
in ein Normales Modul

Option Explicit
Public strTo As String, strCc As String, strSubj As String, strBody As String
Sub AutoSend()
Dim iZeile As Integer, iLR As Integer, dWo As Double, iZ1 As Integer
Dim AfDat As Date, WeDat As Date
iZ1 = 3 'erste Zeile mit Daten
With Sheets("Einzelaufstellung (ändern)")
iLR = .Cells(.Rows.Count, "B").End(xlUp).Row 'letzte Zeile der Spalte
For iZeile = iZ1 To iLR
If .Cells(iZeile, 2)  "" Then
AfDat = .Cells(iZeile, 4)
WeDat = .Cells(iZeile, 10)
'noch kein WE und keine mail seit 14 Tagen
If WeDat = 0 And Date - AfDat > 14 Then
'noch keine mail oder letzte mail älter als 7 Tage
If .Cells(iZeile, 15) = "" Or Date - .Cells(iZeile, 15) > 7 Then
' Letzte mail eintragen in Spalte O
.Cells(iZeile, 15) = Date
'Woche
dWo = Round((Date - AfDat) / 7, 1)
'Mail zusammenbauen
strTo = .Cells(iZeile, 2)
strCc = ""
strSubj = "Kom. " & .Cells(iZeile, 3) & " / Erinnnerung"
strBody = "Automatische Erinnerung &LTp>&LTp> " & _
"Für Kom. " & .Cells(iZeile, 3) & " ist seit " & dWo & " Wochen keine Ware zur Verarbeitung eingetroffen."
strBody = strBody & "&LTp>&LTp>&LTp>&LTp> Mit freundlichen Grüßen &LTp>&LTp> Ihr Team von XYZ"
Call send_Email(strTo, strCc, strSubj, strBody)
End If
End If
End If
Next
End With
End Sub
Sub send_Email(strTo, strCc, strSubj, strBody)
Dim olApp As Object
Set olApp = CreateObject("Outlook.Application")
With olApp.CreateItem(0)
.Subject = strSubj
.To = strTo
.Cc = strCc
.htmlbody = strBody
.Display 'anzeigen
'.SendMail 'direkt senden
End With
Set olApp = Nothing
End Sub
Das automatische Absenden wird nicht in allen Firmen zugelassen. (.Display / .SendMail)
LG UweD
Anzeige
AW: Automatische Erinnerungsmail senden
09.06.2022 20:01:03
Max
Hallo Uwe,
wow! Es gibt noch Menschen, die zaubern können ;-)
Zwei Punkte habe ich noch:
Punkt 1:
Ist es möglich, dass Script immer automatisch auszuführen, wenn die Excel-Datei geöffnet wurde?
Punkt 2:
Es kann vorkommen, dass ein Kunde mit gleicher Kommission mehrfach vorkommt, dann soll aber nur einmal für diesen Kunden mit dieser Kommission die Erinnerung versendet werden.
Anzeige
AW: Automatische Erinnerungsmail senden
10.06.2022 09:30:10
UweD
Hallo
Prima dass es läuft
Zu 1)
Schreibe in den Codebereich von DieseArbeitsmappe

Private Sub Workbook_Open()
Call AutoSend
End Sub


Zu 2)
Habe ich erweitert

Option Explicit
Public strTo As String, strCc As String, strSubj As String, strBody As String
Sub AutoSend()
Dim iZeile As Integer, iLR As Integer, dWo As Double, iZ1 As Integer
Dim AfDat As Date, WeDat As Date
iZ1 = 3 'erste Zeile mit Daten
With Sheets("Einzelaufstellung (ändern)")
iLR = .Cells(.Rows.Count, "B").End(xlUp).Row 'letzte Zeile der Spalte
For iZeile = iZ1 To iLR
If .Cells(iZeile, 2)  "" Then
AfDat = .Cells(iZeile, 4)
WeDat = .Cells(iZeile, 10)
'noch kein WE und keine mail seit 14 Tagen
If WeDat = 0 And Date - AfDat > 14 Then
'noch keine mail oder letzte mail älter als 7 Tage
If .Cells(iZeile, 15) = "" Or Date - .Cells(iZeile, 15) > 7 Then
'Prüfen ob es sich um gleichen Kunden, gleiche Kommission handelt
'und bereits eine mail für HEUTE vorliegt
If WorksheetFunction.CountIfs(.Cells(iZ1, 2).Resize(iZeile - iZ1 + 1, 1), .Cells(iZeile, 2), _
.Cells(iZ1, 3).Resize(iZeile - iZ1 + 1, 1), .Cells(iZeile, 3), _
.Cells(iZ1, 15).Resize(iZeile - iZ1 + 1, 1), "&date") &LTp> " & _
"Für Kom. " & .Cells(iZeile, 3) & " ist seit " & dWo & " Wochen keine Ware zur Verarbeitung eingetroffen."
strBody = strBody & "&LTp>&LTp>&LTp>&LTp> Mit freundlichen Grüßen &LTp>&LTp> Ihr Team von XYZ"
Call send_Email(strTo, strCc, strSubj, strBody)
Else
'Bei Bedarf keine mail bei Wiederholung, aber trotzdem Datum reinschreiben
.Cells(iZeile, 15) = Date
End If
End If
End If
End If
Next
End With
End Sub
Sub send_Email(strTo, strCc, strSubj, strBody)
Dim olApp As Object
Set olApp = CreateObject("Outlook.Application")
With olApp.CreateItem(0)
.Subject = strSubj
.To = strTo
.Cc = strCc
.htmlbody = strBody
.Display 'anzeigen
'.SendMail 'direkt senden
End With
Set olApp = Nothing
End Sub
LG UweD
Anzeige
AW: Automatische Erinnerungsmail senden
11.06.2022 19:45:48
Max
Hallo Uwe,
bis auf den "Autostart" läuft es so wie es soll. Vielen Dank dafür.
Beim Abspielen der Autostart VBA kommt folgender Fehler:
Fehler beim Kompilieren: Sub oder Function nicht definiert.
Ich habe deinen Code in "DieseArbeitsmappe" eingefügt:

Private Sub Workbook_Open()
Call AutoSend
End Sub
Hast du noch eine Idee?
VG Max
Anzeige
AW: Automatische Erinnerungsmail senden
11.06.2022 20:46:48
ralf_b
es wäre hier wichtig zu wissen was denn nicht gefunden wird.
entweder die sub autosend oder irgend etwas darin. Setze einen Haltepunkt in die Call Autosend Zeile und gehe mit F8 weiter.
AW: Automatische Erinnerungsmail senden
12.06.2022 14:58:56
Max
Hallo Ralf,
DieseArbeitsmappe enthält ausschließlich den folgenden VBA-Code:

Private Sub Workbook_Open()
Call AutoSend
End Sub 
Wenn ich einen Haltepunkt setze, wird bei der Zeile Private Sub Workbook_Open() direkt der „Fehler beim Kompilieren“ angezeigt. Excel kommt garnicht erst zur Zeile Call AutoSend
Anzeige
AW: Automatische Erinnerungsmail senden
12.06.2022 15:45:06
ralf_b
schreib vor die sub ein "public". public sub Autosend() und versuche es erneut. Is auch gut möglich das zum Zeitpunkt des Workbook_open noch ein Teil der Mappe nicht bekannt ist. Liegt Autosend in einem Modul? Dan mal dem Modulnamen davor schreiben. z.b. call modul1.autosend
AW: Automatische Erinnerungsmail senden
12.06.2022 19:34:26
Max
Super, Vielen Dank.
Die Lösung war nicht der Modulname, sondern das Tabellenblatt vorzusetzen:

Private Sub Workbook_Open()
Call Tabelle4.AutoSend
End Sub                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          
Schlussendlich, ein großes DANKE an alle hier im Forum, die immer schnelle und vor allem sehr gute Lösungen liefern.
Danke an Uwe und Ralf.
VG Max
Anzeige
AW: Automatische Erinnerungsmail senden
12.06.2022 21:38:11
ralf_b
ich korrigiere dich hier ungern, aber Tabelle4 ist auch der Modulname des Blattes.
AW: Automatische Erinnerungsmail senden
12.06.2022 21:57:04
Max
Alles klar. Danke für den Hinweis. Bin noch kein VBA-Kenner… aber es wird langsam 😉
;
Anzeige
Anzeige

Infobox / Tutorial

Automatische Erinnerungsmail in Excel erstellen


Schritt-für-Schritt-Anleitung

Um eine automatische Erinnerungsmail in Excel zu erstellen, benötigst du eine Kombination aus Excel-Formeln und VBA. Hier sind die Schritte, um die erinnerungsmail zu automatisieren:

  1. Vorbereitung der Excel-Datei:

    • Erstelle eine Tabelle mit den notwendigen Informationen, z.B. Auftragsdatum, E-Mail-Adresse, und Kommission.
    • Stelle sicher, dass sich alle relevanten Daten in definierten Zellen befinden.
  2. VBA-Editor öffnen:

    • Drücke ALT + F11, um den VBA-Editor zu öffnen.
    • Füge ein neues Modul hinzu (Rechtsklick auf den Projekt-Explorer > Einfügen > Modul).
  3. VBA-Code einfügen:

    • Füge den folgenden Code in das Modul ein:
    Option Explicit
    Public strTo As String, strCc As String, strSubj As String, strBody As String
    
    Sub AutoSend()
       Dim iZeile As Integer, iLR As Integer, dWo As Double, iZ1 As Integer
       Dim AfDat As Date, WeDat As Date
       iZ1 = 3 'erste Zeile mit Daten
       With Sheets("Einzelaufstellung (ändern)")
           iLR = .Cells(.Rows.Count, "B").End(xlUp).Row 'letzte Zeile der Spalte
           For iZeile = iZ1 To iLR
               If .Cells(iZeile, 2) <> "" Then
                   AfDat = .Cells(iZeile, 4)
                   WeDat = .Cells(iZeile, 10)
                   'noch kein WE und keine mail seit 14 Tagen
                   If WeDat = 0 And Date - AfDat > 14 Then
                       'noch keine mail oder letzte mail älter als 7 Tage
                       If .Cells(iZeile, 15) = "" Or Date - .Cells(iZeile, 15) > 7 Then
                           'Mail zusammenbauen
                           strTo = .Cells(iZeile, 2)
                           strCc = ""
                           strSubj = "Kom. " & .Cells(iZeile, 3) & " / Erinnerung"
                           strBody = "Automatische Erinnerung für Kom. " & .Cells(iZeile, 3) & " ist seit " & dWo & " Wochen keine Ware zur Verarbeitung eingetroffen."
                           Call send_Email(strTo, strCc, strSubj, strBody)
                       End If
                   End If
               End If
           Next
       End With
    End Sub
    
    Sub send_Email(strTo, strCc, strSubj, strBody)
       Dim olApp As Object
       Set olApp = CreateObject("Outlook.Application")
       With olApp.CreateItem(0)
           .Subject = strSubj
           .To = strTo
           .Cc = strCc
           .HTMLBody = strBody
           .Display 'anzeigen
       End With
       Set olApp = Nothing
    End Sub
  4. Automatisches Ausführen aktivieren:

    • Füge den folgenden Code in DieseArbeitsmappe ein, um das Skript beim Öffnen der Datei automatisch auszuführen:
    Private Sub Workbook_Open()
       Call AutoSend
    End Sub

Häufige Fehler und Lösungen

  • Fehler beim Kompilieren: Wenn du die Fehlermeldung "Sub oder Function nicht definiert" erhältst, stelle sicher, dass der Name der Funktion AutoSend korrekt geschrieben ist und sich im richtigen Modul befindet.
  • Outlook öffnet sich nicht: Überprüfe, ob Outlook korrekt installiert und konfiguriert ist, da der Code eine automatische Erinnerungsmail über Outlook versendet.
  • Keine E-Mail wird gesendet: Stelle sicher, dass die Bedingungen im Code erfüllt sind (mindestens 14 Tage nach dem Auftragsdatum).

Alternative Methoden

Falls du VBA nicht nutzen möchtest, kannst du auch folgende Methoden in Betracht ziehen:

  • Excel Erinnerungsfunktion: Nutze Excel-Formeln, um farbige Markierungen für fällige Aufgaben zu erstellen, die dich manuell an das Versenden von E-Mails erinnern.
  • Third-Party-Tools: Es gibt verschiedene Add-Ins, die Erinnerungsfunktionen in Excel integrieren.

Praktische Beispiele

Hier ist ein praktisches Beispiel, wie du die Excel Erinnerungsfunktion zur Verfolgung von Aufgaben nutzen kannst:

  1. Erstelle eine Tabelle mit den Spalten:

    • Auftragsdatum
    • E-Mail
    • Kommission
    • Letzte Erinnerung
  2. Verwende die Formel in der Spalte für die letzte Erinnerung:

    =WENN(HEUTE()-[Auftragsdatum]>14; "Erinnerung senden"; "")

Dies zeigt an, wenn eine automatische Erinnerungsmail gesendet werden sollte.


Tipps für Profis

  • E-Mail-Vorlagen: Erstelle Vorlagen in Outlook, um den E-Mail-Versand zu beschleunigen.
  • Testen des Codes: Setze Haltepunkte im VBA-Code, um sicherzustellen, dass alles wie gewünscht funktioniert.
  • Datensicherheit: Achte darauf, dass sensible Daten in deinen E-Mails nicht ungeschützt sind.

FAQ: Häufige Fragen

1. Kann ich die E-Mail automatisch senden, ohne sie vorher anzuzeigen? Ja, ändere .Display in der send_Email-Subroutine zu .Send, um die E-Mail direkt zu senden.

2. Welche Excel-Version benötige ich für diesen VBA-Code? Der Code sollte in den meisten aktuellen Excel-Versionen (Excel 2010 und höher) funktionieren.

3. Kann ich die Frequenz der Erinnerungen anpassen? Ja, passe die Zahlen in den Bedingungen im Code an, um die Tage zwischen den Erinnerungen zu ändern.

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