Das Clever-Excel-Forum.de - Treffen
findet vom 15. - 17. September 2017 in Thüringen / Region Großer Inselsberg statt. Hotelbuchung ab sofort möglich.


E-Mail nach Zellenprüfung
#1
Hallo Zusammen,

ich habe folgende Anfrage:
In Spalte B ist das Eingangsdatum des jeweiligen Projekts hinterlegt. Die Aufgabe des Makros soll es sein, zuerst das Eingangsdatum zu prüfen, falls dieses älter als 6 Monate ist, soll der Status Spalte D geprüft werden. Wenn der Status Spalte D einen bestimmten Wert, in diesem Fall wäre es "submitted", aufweist soll eine Erinnerungsmail an den Sales Member gesendet werden.

Würde mich über Lösungsvorschläge freuen und bedanke mich im Voraus.


Angehängte Dateien
.xlsx   Mappe.xlsx (Größe: 9,83 KB / Downloads: 7)
to top
#2
Hallo, im MOF hat das wahrscheinlich (auch) noch niemand g'spannt...
cu jörg eine rückmeldung wäre ganz reizend XL2003 bis XL2013
to top
#3
Hallo,

im Prinzip so. Den Code fügst Du in ein Modul ein, aktivierst den im Kommentar genannten Verweis und weist den code z.B. einer Schaltfläche zu.
Hinweis: Bitte poste im anderen Forum, dass Du hier eine Lösung erhalten hast !!

Code:
Option Explicit

' Verweis auf "Microsoft Outlook xxx Object Library"
' schauan
' Programmiert fuer Clever-Excel-Forum 2014
Sub SendInfoMail()
'Variablendekalrationen
Dim olApp As Outlook.Application
Dim objMail As Outlook.MailItem
Dim iCnt%
'Outlook-Anwendungsobjekt setzen
Set olApp = Outlook.Application
'Schleife  bis zur letzten gefuellten Zelle der Spalte B
For iCnt = 2 To Sheets("Tabelle1").Cells(Rows.Count, 2).End(xlUp).Row
    'Wenn Datum in Zelle aelter als 183 Tage, dann
    If Sheets("Tabelle1").Cells(iCnt, 2).Value < Date - 183 Then
        'email-Objekt setzen
        Set objMail = olApp.CreateItem(olMailItem)
        'mit dem email
        With objMail
            'an
            .To = Sheets("contacts").Cells(Sheets("contacts").Columns(1).Find(Sheets("Tabelle1").Cells(iCnt, 3).Value).Row, 2).Value
            'Betreff
            .Subject = "Es wird Zeit ... Projekt: " & Sheets("Tabelle1").Cells(iCnt, 1).Value
            'Textkoerper
            .Body = "Der Termin ist schon 6 Monate ueberschritten. Mit freundlichen Grüßen"
            'email anzeigen
            .Display
        'Ende mit dem email
        End With
        'email-Objekt zuruecksetzen
        Set objMail = Nothing
    'Ende Wenn Datum in Zelle aelter als 183 Tage, dann
    End If
'Ende Schleife  bis zur letzten gefuellten Zelle der Spalte B
Next
'Outlook-Objekt zuruecksetzen
Set olApp = Nothing
End Sub
   \\\|///      Hoffe, geholfen zu haben.
   ( ô ô )      Grüße, André aus G in T  
 ooO-(_)-Ooo    (Excel 97-2016)
to top
#4
Vorab erstmal Danke.

Beim Ausführen des Befehls wird mir nun ein Fehler beim Kompilieren angezeigt. Wobei die Zeile mit "Sub SendInfoMail ()" gelb hinterlegt wird und beim schließen des VBA Editors der Hinweis "Dieser Befehl beendet den Debugger" angezeigt wird.

Konkrete Vorschläge?

Darüber hinaus verstehe ich an sich den Befehl, können wir allerdings noch die Spalte D = Status einpflegen - sodass im konkreten Fall die Mail generiert wird, wenn das Datum älter als 183 Tage ist und der Status bspw. auf "submitted" gesetzt ist.

Vielen Dank im Voraus.
to top
#5
Hallöchen,

ich hatte doch darum gebeten, dass Du im anderen Forum postest, dass Du hier eine Lösung bekommen hast. Der Fehker kommt vermutlich, weil Du noch einen Hinweis nicht beachtet hast ... Also, poste drüben mal einen Link auf meine Antwort und dann machen wir hier weiter.
   \\\|///      Hoffe, geholfen zu haben.
   ( ô ô )      Grüße, André aus G in T  
 ooO-(_)-Ooo    (Excel 97-2016)
to top
#6
erledigt.
to top
#7
Hallo,

also, der Fehler kommt wahrscheinlich, weil Du den Verweis nicht gesetzt hast, siehe dazu der Kommentar am Anfang des Makros. Du findest den unter dem Menü | Extras | Verweise im VBA-Editor. Ich hatte xx hingeschrieben, weil der von Excelversion zu Excelversion eine unterschiedliche Nummer hat - bei uns mit 2013 ist es die 15.
   \\\|///      Hoffe, geholfen zu haben.
   ( ô ô )      Grüße, André aus G in T  
 ooO-(_)-Ooo    (Excel 97-2016)
to top
#8
super danke, habs hinbekommen.

können wir noch das Problem mit Spalte D und dem Status lösen?

gruß
to top
#9
Hallöchen,

erst mal ungetestet

ersetze die Zeile

If Sheets("Tabelle1").Cells(iCnt, 2).Value < Date - 183 Then

durch

If Sheets("Tabelle1").Cells(iCnt, 2).Value < Date - 183 and Sheets("Tabelle1").Cells(iCnt, 4).Value = "submitted" Then


Bei submitted bitte auf die korrekte Schreibweise achten.
   \\\|///      Hoffe, geholfen zu haben.
   ( ô ô )      Grüße, André aus G in T  
 ooO-(_)-Ooo    (Excel 97-2016)
to top
#10
funktioniert soweit. werde es noch weiter testen.

besten dank für den schnellen und perfekten support!!!
to top


Möglicherweise verwandte Themen...
Thema Verfasser Antworten Ansichten Letzter Beitrag
  E-Mail mit Text als Link AlpenZwerg 5 77 01.12.2016, 19:52
Letzter Beitrag: mumpel
  E-Mail aus Outlook in Excel-Gruppierung hinzufügen MacTop 6 113 15.11.2016, 11:26
Letzter Beitrag: MacTop
  E-Mail Benachrichtigung nach Änderung an einer Excel-Datei mrmbj 1 65 11.11.2016, 17:09
Letzter Beitrag: schauan
  Makro > E-Mail > Wort WAHR im Text Brotmaschine 6 147 21.10.2016, 06:52
Letzter Beitrag: Brotmaschine
  E-Mail automatisch aus Excel versenden Garfield123 31 860 20.09.2016, 18:21
Letzter Beitrag: Käpt'n Blaubär
  Datum/VBA/Mail Versand DonGorri 2 154 24.08.2016, 10:43
Letzter Beitrag: DonGorri
  Mail von Excel an einem Bestimmten Datum als Reminder Thore 4 361 02.08.2016, 07:38
Letzter Beitrag: Thore
  CC in Mail aus tabellenblatt ziehen KS20 4 289 29.07.2016, 05:35
Letzter Beitrag: KS20
  PDF per Mail mit Bestätigung! cysu11 3 287 03.07.2016, 10:47
Letzter Beitrag: cysu11
  Formatierungsproblem - Tabellenblatt per VBA mit Mail versenden ingbur 1 250 05.04.2016, 13:22
Letzter Beitrag: Zwergel

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste