Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1316to1320
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

automatisches EMail wenn Wert überschritten

automatisches EMail wenn Wert überschritten
24.06.2013 10:16:05
Julia
Hi!
ich habe eine Exceltabelle mit Messwerten pro Monat. Zu jedem Messwert gibt es einen Grenzwert, den ich "überwachen" muss. Da ich von diesen Tabellen sehr viele habe dachte ich an eine autmatisierte EMail aus Excel heraus, sobald der Grenzwert erreicht bzw. überschritten wurde (Text muss nix aufregendes sein, nur "Überschreitung Grenzwert bei....").
Leider bekomme ich das überhaupt nicht hin :( hoffe wie immer auf Eure super Hilfe!
Hier eine Beispieldatei: https://www.herber.de/bbs/user/85990.xlsx
GLG und schonmal Danke!
Julia

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

Betreff
Datum
Anwender
Anzeige
AW: automatisches EMail wenn Wert überschritten
24.06.2013 10:34:02
Tino
Hallo,
wie kommen den die Daten in die Tabelle?
Davon ist ja abhängig wann diese automatische Mail versendet werden soll.
Gruß Tino

AW: automatisches EMail wenn Wert überschritten
24.06.2013 11:00:49
Julia
Die Daten werden derzeit händisch in die Tabelle eingegeben (allerdings auf ein anderes Tabellenblatt).ich habe dann einen Übertrag der Werte mit "wechseln", da die Analyseergebnisse oft ein ">" enthalten und dann funktioniert auch keine Rechnung mehr. ich hab es mal im Beispiel eingebaut:
https://www.herber.de/bbs/user/85991.xlsx
ist es möglich, dass immer beim speichern der Datei eine Prüfung läuft und dann eben, wenn ein Grenzwert überschritten ist, ein EMail gesendet wird?
Danke schonmal!!!
GLG

Anzeige
AW: automatisches EMail wenn Wert überschritten
24.06.2013 11:14:23
Rudi
Hallo,
und dann eben, wenn ein Grenzwert überschritten ist, ein EMail gesendet wird?
für jede Überschreitung? Also ggfs. 30 Mails?
Welches Mailprogramm?
Gruß
Rudi

AW: automatisches EMail wenn Wert überschritten
24.06.2013 11:16:34
Julia
Hi Rudi!
ja, zur not 30 Emails :) Mailprogramm ist Outlook.
LG

AW: automatisches EMail wenn Wert überschritten
24.06.2013 11:37:40
Tino
Hallo,
habe hier mal was zusammengestellt, vielleicht passt es so.
kommt als Code in DieseArbeitsmappe
Option Explicit 
 
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) 
Call CheckGrenzwerte 
End Sub 
 
kommt als Code in Modul1
Option Explicit 
Dim lvntTaskId As Double 
 
Sub CheckGrenzwerte() 
Dim MaxRow&, strRange$ 
 
Const MailAdresse$ = "Empfänger@Proviter.de" 'Mail-Adresse 
 
With Tabelle1 
    MaxRow = .Cells(.Rows.Count, 1).End(xlUp).Row 
    If MaxRow < 2 Then Exit Sub 
    With .UsedRange 
        With .Columns(.Columns.Count).Offset(0, 1) 
            .FormulaR1C1 = "=IF(AND(COUNTIF(RC3:RC14,"">""&RC2),ROW()>1),TRUE,"""")" 
             
            On Error Resume Next 
                strRange = .SpecialCells(xlCellTypeFormulas, 4).EntireRow.Address(0, 0) 
                .Clear 
            On Error GoTo 0 
        End With 
    End With 
 
    If strRange <> "" Then 
        Call Open_Outlook 
        MailSenden MailAdresse, strRange 
    End If 
End With 
End Sub 
 
Sub MailSenden(strAn$, strRange$) 
Dim MyOutApp As Object, MyMessage As Object 
Set MyOutApp = CreateObject("Outlook.Application") 
Set MyMessage = MyOutApp.CreateItem(0) 
With MyMessage 
    .To = strAn 
    .Subject = "Grenzwert" 
    .body = "Grenzwert überschritten " & ThisWorkbook.Name & vbCr & vbCr & strRange 
    .Importance = 2 'Wichtigkeit hoch 
    .Display 'hier Anzeigen 
    '.Send 'Hier wird die Mail gesendet 
End With 
 
Set MyOutApp = Nothing 
Set MyMessage = Nothing 
End Sub 
 
 
 
Sub Open_Outlook() 
Dim strPath$, oApp As Object 
On Error Resume Next 
Set oApp = GetObject(, "Outlook.Application") 
If Err.Number = 0 Then Exit Sub 
strPath = Application.Parent.Path 
If Right$(strPath, 1) <> "\" Then strPath = strPath & "\" 
lvntTaskId = Shell(strPath & "OUTLOOK.EXE", vbMinimizedFocus) 
End Sub 
 
 
Gruß Tino

Anzeige
AW: automatisches EMail wenn Wert überschritten
24.06.2013 11:55:27
Julia
Hi Tino!
das funktioniert einwandfrei! ich denke, die Meldung, dass man die "Erlaubnis erteilen" muss ist notwendig, damit kein Unsinn passiert, oder?
und dann noch eine peinliche frage (aber ich kenn mich mit der Schreibweise von RC nicht gut aus. wie muss ich denn den Code anpassen, damit die "Abfrage" von Zeile 11 bis 30 läuft stimmt
.FormulaR1C1 = "=IF(AND(COUNTIF(RC11:RC30;"">""&RC2),ROW()>1),TRUE,"""")" ?
Muss ich auf etwas achten wenn meine Tabellenblätter anders heißen? Zumindest hat es bei meiner Originaldatei jetzt funktiert, auch wenn das Tabellenblatt nicht "Tabelle1" heisst.
Danke, Danke, Danke!!!

Anzeige
AW: automatisches EMail wenn Wert überschritten
24.06.2013 12:08:57
Tino
Hallo,
bei RC bedeutet R = Zeile (Row) und C = Spalte (Column), was Du anpassen willst sind die Spalten.
Die Zeilen sollten sich automatisch an die Tabelle anpassen,
dies geschieht im Code durch UsedRange = Benutzter Bereich.
Gruß Tino

AW: automatisches EMail wenn Wert überschritten
24.06.2013 11:58:27
Julia
ich nochmal!
noch eine Sache, die mir gerade aufgefallen ist.
wenn ich jetzt GRenzwertüberschreitungen in vorangegangen Monaten hatte, möchte ich für diese keine weiteren Meldungen erhalten, also immer nur für "neue" Überschreitungen...
ist das anpassbar?
DANKE

AW: automatisches EMail wenn Wert überschritten
24.06.2013 11:58:28
Julia
ich nochmal!
noch eine Sache, die mir gerade aufgefallen ist.
wenn ich jetzt GRenzwertüberschreitungen in vorangegangen Monaten hatte, möchte ich für diese keine weiteren Meldungen erhalten, also immer nur für "neue" Überschreitungen...
ist das anpassbar?
DANKE

Anzeige
AW: automatisches EMail wenn Wert überschritten
24.06.2013 12:10:10
Tino
Hallo,
also Du meinst nur für den aktuellen Monat?
Gruß Tino

AW: automatisches EMail wenn Wert überschritten
24.06.2013 12:27:37
Julia
Genau! Bzw der nächste eingetragene Monat (Manchmal hinkt das ein wenig hinterher)
DANKE
LG

AW: automatisches EMail wenn Wert überschritten
24.06.2013 12:41:55
Tino
Hallo,
hier der Code um nur die aus dem aktuellen Monat zu bekommen bzw.
für den letzten Eintrag in der Zeile.
Die Ausgabe habe ich auch etwas angepasst.
Die Sub durch diese ersetzen.
Sub CheckGrenzwerte()
Dim MaxRow&, n&, strRange$, arAdress
Dim Regex As Object

Const MailAdresse$ = "Empfänger@Proviter.de" 'Mail-Adresse 

With Tabelle1
    MaxRow = .Cells(.Rows.Count, 1).End(xlUp).Row
    If MaxRow < 2 Then Exit Sub
    With .UsedRange
        With .Columns(.Columns.Count).Offset(0, 1)
            '*** Entsprechende Formel bei FormulaR1C1 einsetzen 
            'für aktuellen Monat 
            '"=IF(AND(COUNTIF(INDEX(RC3:RC14,,MONTH(TODAY())),"">""&RC2),ROW()>1),TRUE,"""")" 
            
            'für den letzten Eintrag 
            '"=IF(AND(COUNTIF(INDEX(RC3:RC14,,MAX(LOOKUP(2,1/(RC3:RC14<>""""),COLUMN(RC3:RC14)))-2),"">""&RC2),ROW()>1),TRUE,"""")" 
            
            .FormulaR1C1 = "=IF(AND(COUNTIF(INDEX(RC3:RC14,,MONTH(TODAY())),"">""&RC2),ROW()>1),TRUE,"""")"
            On Error Resume Next
                strRange = .SpecialCells(xlCellTypeFormulas, 4).EntireRow.Address(0, 0)
                .Clear
            On Error GoTo 0
        End With
    End With

    If strRange <> "" Then
        Call Open_Outlook
        Set Regex = CreateObject("Vbscript.Regexp")
        With Regex
            .Pattern = "[:]{1,1}\d+"
            .MultiLine = True
            .Global = True
            strRange = Replace(.Replace(strRange, ""), ",", ", ")
        End With
        strRange = "In Zeile:" & vbCr & vbCr & strRange
        MailSenden MailAdresse, strRange
    End If
End With

Set Regex = Nothing
End Sub
Gruß Tino

Anzeige
AW: automatisches EMail wenn Wert überschritten
24.06.2013 12:56:12
Julia
Hi Tino!
PERFEKT!!!!!!!!!!!!
Ganz lieben lieben Dank für die rasche Hilfe!
LG

302 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige