Moin! Habe mal versucht mich durch deine Idee zu kämpfen. Hier mal ein Versuch wie es m.E. deine Wünsche erfüllen könnte. Bei dem Datum habe ich aber nur mal geprüt, ob es älter als das eingetragene Datum. Das mit der Woche habe ich weggelassen (weil in de selben Woche bspw. am Montag verschickt man ja meist noch keine Erinnerung, wenn der Termin erst am Samstag wäre ). Es werden alle Mails angelegt. Muss man sich dann halt durch die duchkämpfen. Einfach mal schauen und prüfen und ggf. erweitern.
VG
Sub mail_reminder()
Dim blatt1 As Object
Dim blatt2 As Object
Dim anzahlzeilen As Long 'zur Prüfung wieviele Zeilen befüllt sind
Dim zeile As Long
Dim spalte As Long
Dim adresszeile
Dim nachricht As String
Set blatt1 = Worksheets(1)
Set blatt2 = Worksheets(2)
nachricht = "Sehr bla bla bla bla "
'beschriebene Zeilen suchen
anzahlzeilen = blatt1.Cells(blatt1.Rows.Count, 5).End(xlUp).Row
'jetzt durch alle Zeilen laufen; Start in Zeile 2 da ich von ausgehe, dass in Zeile 1 Überschriften sind
For zeile = 2 To anzahlzeilen
'durch spalte L und M gehen
For spalte = 12 To 13
'prüfen ob dort ein Wert ist und ob es dazu noch kein Datum gibt
If blatt1.Cells(zeile, spalte) <> "" And blatt1.Cells(zeile, spalte + 3) = "" Then
'prüfe Datum vom Reminder älter
If blatt1.Cells(zeile, spalte) < Date Then
'reminder eingetragen und Mail noch nicht verschickt
' prüfen ob ein numer. Code vorliegt
If blatt1.Cells(zeile, 5) <> "" Then
Set adresszeile = blatt2.Columns(2).Find(blatt1.Cells(zeile, 5), LookIn:=xlValues)
If Not adresszeile Is Nothing Then
adresszeile = adresszeile.Row
'num. Code liegt vor also Mail verschicken, wenn adresse da
If blatt2.Cells(adresszeile, 13) <> "" Then
'Adresse gefunden
Call mail_erstellen(nachricht, blatt2.Cells(adresszeile, 13), spalte - 11 & ". Erinnerung")
blatt1.Cells(zeile, spalte + 3) = Date
Else
MsgBox "Eine Nachricht kann nicht verschickt werden, da keine EMailadresse gefunden wurde!", , "fehlende Adresse"
End If
End If
End If
End If
End If
Next spalte
Next zeile
Set blatt1 = Nothing
Set blatt2 = Nothing
End Sub
Sub mail_erstellen(text As String, adresse As String, betreff As String)
Dim OLAnwendung As Object
Dim EMail As Object
Set OLAnwendung = CreateObject("Outlook.Application")
Set EMail = OLAnwendung.CreateItem(0)
With EMail
.To = adresse
.Subject = betreff
.body = text
.Display
End With
Set OLAnwendung = Nothing
Set EMail = Nothing
End Sub
|