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

Forumthread: Datum überschritten E-Mail senden

Datum überschritten E-Mail senden
12.06.2017 20:36:55
Marco
Servus alle ich habe hier einen Code zum versenden von E-Mails beim überschreiten eines Datums gefunden der auch super läuft. Leider passt der Code nur bedingt. Anstatt die E-Mail aus Zelle B4 zu verwenden möchte ich das immer die E-Mail adresse hergenommen wird die neben der Zelle steht in dem das Datum gefunden wurde welches die Zeit überschritten hat. Ich habe versucht eine Variable usw einzubauen aber es klappt einfach nicht. Das muss ich denn anstatt "B4" angeben damit es geht? Ich wäre euch sehr dankbar wenn mir da jemand weiter helfen würde.
Private Sub Workbook_Open()
Dim rCell As Range
Dim objApp As Object
Dim objMailItm As Object
Dim tBRng As String
Dim tReceiver As String
tBRng = "A11:A" & Sheets("ToDo").UsedRange.Rows.Count
tReceiver = Sheets("ToDo").Range("B4")
Set objApp = CreateObject("Outlook.Application")
For Each rCell In Sheets("ToDo").Range(tBRng)
If IsDate(rCell.Offset(0, 5).Value) Then
If rCell.Offset(0, 5) - Date " & vbCrLf & _
"wird am " & rCell.Offset(0, 5).Value & " fällig!"
.Send
End With
rCell.Offset(0, 9).Value = True
Set objMailItm = Nothing
End If
End If
Next
Set objApp = Nothing
End Sub
Grüße Marco
Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Datum überschritten E-Mail senden
13.06.2017 08:41:57
UweD
Hallo
Da du keine Musterdatei angehangen hast === ungetestet....
Private Sub Workbook_Open()
    Dim rCell As Range
    Dim objApp As Object
    Dim objMailItm As Object
    Dim tBRng As String
    Dim tReceiver As String
    
    tBRng = "A11:A" & Sheets("ToDo").UsedRange.Rows.Count
    
    
    Set objApp = CreateObject("Outlook.Application")
    For Each rCell In Sheets("ToDo").Range(tBRng)
        If IsDate(rCell.Offset(0, 5).Value) Then
            If rCell.Offset(0, 5) - Date <= Sheets("ToDo").Range("A3").Value _
               And Not (rCell.Offset(0, 9).Value) Then
                Set objMailItm = objApp.CreateItem(0)
                With objMailItm
                    .BCC = rCell.Offset(0, 1)
                    .Subject = "Fälligkeitswarnung"
                    .Body = "Die Tätigkeit <" & _
                             rCell.Offset(0, 1).Value & ">" & vbCrLf & _
                            "wird am " & rCell.Offset(0, 5).Value & " fällig!"
                    .Send
                End With
                rCell.Offset(0, 9).Value = True
                Set objMailItm = Nothing
            End If
        End If
    Next
    Set objApp = Nothing
End Sub

LG UweD
Anzeige
AW: Datum überschritten E-Mail senden
13.06.2017 09:27:27
Marco
Morgen Uwed danke für deine Hilfe aber leider hat es nicht funktioniert daher habe ich jetzt die Datei per Handy hochgeladen da ich vom pc aus nichts versenden kann.
https://www.herber.de/bbs/user/114235.xls
Die Emails sollen aus der Spalte Zuständiger genommen werden welche neben der Spalte Termin ist anstatt die Email Adresse aus Zelle A3 zunehmen.
Bei dem Code von dir kommt Outlook findet mindestens eine Adresse nicht.
Ich hoffe du kannst mir weiterhelfen
Anzeige
AW: Datum überschritten E-Mail senden
13.06.2017 10:16:19
UweD
Hallo
Es ist die Spalte, die um von A aus gesehen 4 versetzt ist.
.BCC = rCell.Offset(1, 4)
LG UweD
AW: Datum überschritten E-Mail senden
13.06.2017 10:41:07
Marco
Vielen Dank UweD es funktioniert super =D Ich habe nur eine kleine Änderung vorgenommen. Bei deinem Code hat das Makro immer die Email Adresse aus der nächsten Zeile verwendet. Daher habe ich es so angepasst:
.BCC = rCell.Offset(0, 4)
Jetzt wird die richtige verwendet. Tausend Dank für deine Hilfe ich bin echt happy dass das jetzt geht
Anzeige
uupps. stimmt. owT
13.06.2017 10:45:50
UweD
AW: uupps. stimmt. owT
14.06.2017 09:14:22
Marco
Morgen UweD, ich weiß das mein Problem schon gelöst ist, aber ich habe eine Frage zum Code. Ich möchte diesen nämlich kommentieren, damit ich weiß was da genau passiert und ich das nachvollziehen kann, wenn ich mal Wochen später so was ähnliches wieder brauchen sollte.
Zum Beispiel weiß ich nicht für was die einzelnen Variablen eigentlich stehen und wie die If Schleife abläuft bzw. was sie wo abfragt. Könntest du mir das vielleicht erklären?
Grüße Marco
Anzeige
AW: Datum überschritten E-Mail senden
13.06.2017 09:34:54
Marco
UweD ich bin es nochmal ich wollte mich für die letzte Nachricht entschuldigen für den Fall das ich etwas doof rüber gekommen bin. Ich habe mich im letzten Beitrag nur so kurz gefasst weil ich diese vom Handy geschickt habe. Die angehängt Datei ist die Ursprüngliche Datei in der der Code von dir nicht drin ist weil ich den am Handy nicht einfügen konnte.
Ich hoffe du kannst mir weiterhelfen. Ich bin dir oder auch jeden anderen sehr dankbar bei der Lösung meines Problems.
Grüße Marco
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

E-Mail versenden, wenn Datum erreicht


Schritt-für-Schritt-Anleitung

Um eine E-Mail aus Excel zu versenden, wenn ein bestimmtes Datum erreicht ist, kannst du den folgenden VBA-Code verwenden. Dieser Code sendet eine E-Mail basierend auf dem Fälligkeitsdatum, das in einer bestimmten Zelle steht. Die E-Mail-Adresse wird aus der benachbarten Zelle entnommen.

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Füge ein neues Modul hinzu: Rechtsklick auf "VBAProject", gehe zu "Einfügen" und wähle "Modul".
  3. Kopiere den folgenden Code in das Modul:
Private Sub Workbook_Open()
    Dim rCell As Range
    Dim objApp As Object
    Dim objMailItm As Object
    Dim tBRng As String
    Dim tReceiver As String
    tBRng = "A11:A" & Sheets("ToDo").UsedRange.Rows.Count
    Set objApp = CreateObject("Outlook.Application")

    For Each rCell In Sheets("ToDo").Range(tBRng)
        If IsDate(rCell.Offset(0, 5).Value) Then
            If rCell.Offset(0, 5) - Date <= 0 Then
                Set objMailItm = objApp.CreateItem(0)
                With objMailItm
                    .BCC = rCell.Offset(0, 4) ' E-Mail-Adresse aus der benachbarten Zelle
                    .Subject = "Fälligkeitswarnung"
                    .Body = "Die Tätigkeit <" & rCell.Offset(0, 1).Value & "> wird am " & rCell.Offset(0, 5).Value & " fällig!"
                    .Send
                End With
                rCell.Offset(0, 9).Value = True
                Set objMailItm = Nothing
            End If
        End If
    Next
    Set objApp = Nothing
End Sub
  1. Schließe den VBA-Editor und speichere die Datei als Excel-Arbeitsmappe mit Makros (.xlsm).
  2. Schließe und öffne die Arbeitsmappe erneut, um das Makro auszuführen.

Häufige Fehler und Lösungen

  • Fehler: Outlook findet mindestens eine Adresse nicht.

    • Lösung: Stelle sicher, dass die E-Mail-Adresse korrekt in der benachbarten Zelle steht. Wenn du die E-Mail-Adresse aus Zelle A3 beziehst, ändere den Code entsprechend.
  • Fehler: E-Mail wird nicht gesendet.

    • Lösung: Überprüfe die Outlook-Einstellungen und stelle sicher, dass Outlook als Standard-Mailanwendung festgelegt ist.

Alternative Methoden

Falls du keine VBA nutzen möchtest, kannst du auch auf Excel-Funktionen zurückgreifen, um eine Erinnerung für bevorstehende Fälligkeitstermine zu erstellen. Du könntest beispielsweise die WENN-Funktion zusammen mit bedingter Formatierung verwenden, um Zellen hervorzuheben, wenn das Fälligkeitsdatum in der Nähe ist.


Praktische Beispiele

Angenommen, du hast eine Excel-Tabelle mit folgenden Spalten:

  • A: Tätigkeit
  • B: Zuständiger
  • C: Fälligkeitsdatum

Wenn du eine E-Mail senden möchtest, wenn das Fälligkeitsdatum erreicht ist, verwende den obigen Code und passe die Offset-Werte entsprechend den Spalten an.


Tipps für Profis

  • Kommentare im Code: Füge Kommentare im VBA-Code hinzu, um später zu verstehen, was jeder Abschnitt tut. Zum Beispiel:
' Setzt die E-Mail-Adresse aus der benachbarten Zelle
.BCC = rCell.Offset(0, 4)
  • Testen des Codes: Teste den Code zunächst mit einer kleinen Anzahl von Datensätzen, um sicherzustellen, dass alles korrekt funktioniert.

  • Automatisierung: Du kannst das Makro so einstellen, dass es regelmäßig ausgeführt wird, indem du es in die Workbook_Open-Methode einfügst oder einen Timer verwendest.


FAQ: Häufige Fragen

1. Wie kann ich die E-Mail an mehrere Empfänger senden?
Du kannst mehrere E-Mail-Adressen durch Semikolons trennen, z.B. .BCC = rCell.Offset(0, 4) & "; " & rCell.Offset(1, 4).

2. Funktioniert dieser Code in Excel Online?
Nein, dieser VBA-Code funktioniert nur in der Desktop-Version von Excel, da Excel Online keine Makros unterstützt.

3. Kann ich die E-Mail auch an eine Gruppe senden?
Ja, du kannst eine Gruppe in Outlook definieren und die Gruppe in der .BCC-Eigenschaft verwenden.

4. Wie kann ich die E-Mail-Benachrichtigung anpassen?
Du kannst den Text in der .Body-Eigenschaft nach deinen Wünschen anpassen, um spezifische Informationen zu senden.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige