Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1324to1328
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

Auswahlkriterien MailGefiltertProAnwender

Auswahlkriterien MailGefiltertProAnwender
02.08.2013 08:02:39
Daniel
Hallo liebes Excel Forum,
Kann mir bitte jemand weiterhelfen, ich komme hier nicht weiter und bin langsam am verzweifeln. Ich hatte gestern schon mein Anliegen gepostet, was bisher unbeantwortet blieb: habe von Klaus M.vdT. eine "MailGefiltertProAnwender" bekommen das automatisch in einer Liste nach Kirterien sucht, diese neu abspeichert und das ganze per email versendet:
Option Explicit
'Definition von Makroweit gültigen Variablen
Const QuelleSheet As String = "Liste"
Const QuelleZeileAb As Long = 1
Const QuelleSpalteAb As Long = 1
Const QuelleSpalteBis As Long = 21
Const QuelleSpalteKST As Long = 2
'Const PfadSpeichern As String = "C:\TestTMP"
Const PfadSpeichern As String = "H:\Projekte\Ausbildungswesen_2013\Excel_Programmierung\ _
Erinnerungstabellen_Test"
Const NameSpeichern As String = "Erinnerungsmail" '+ Anwender 1 usw.
'Definition der Mail-Inhalte
Const MailSheet As String = "Kst-Koordinator"
Const MailColKST As Long = 1
Const MailColName As Long = 2
Const MailColAddy As Long = 3
Const MailSubject As String = "Zusammenfassung von der Arbeitssicherheit für verantwortliche  _
Kostenstellen " '+Anwender 1 usw
Const MailText1 As String = "Hallo " '+Anwender
Const MailText2 As String = ", 
hier ist Ihre Zusammenfassung!" 'HTML-Tags im Text nutzen! _ _ _ Sub MailGefilterttProAnwender() 'Verschickt ein Mail an jeden Kostenstellenverantwortlichen, wenn in SPalte K das Datum = Jahr _ _ 2014 hat - und erstellt ein Backup 'On Error GoTo hell 'WICHTIG! Im Sub werden Displayalerts abgeschaltet, die müssen on Error _ Const SpalteFiltern As Long = 10 'Jahre stehen in Spalte J = 10 Dim wkbOld As Workbook Dim wkbNew As Workbook Dim rAnwender As Range Dim lRow As Long Dim NameOfSave As String Dim TextPerson As String 'das Workbook merken - denn später geht es in andere Workbooks! Set wkbOld = ActiveWorkbook 'Autofilter setzen Call DoResetAutofilter(Sheets(QuelleSheet), QuelleSpalteAb, QuelleSpalteBis, QuelleZeileAb) 'Nach 2014 filtern - einfach aus dem Makrorekorder holen! Sheets(QuelleSheet).Range("A1").AutoFilter Field:=SpalteFiltern, Operator:=xlFilterValues, _ Criteria2:=Array(0, "8/1/2013") With Sheets(MailSheet) 'Alle KST einmal durchlaufen lRow = .Cells(.Rows.Count, MailColKST).End(xlUp).Row For Each rAnwender In .Cells(2, 1).Resize(lRow - 1, 1) 'Nach KST filtern Sheets(QuelleSheet).Range("A1").AutoFilter Field:=QuelleSpalteKST, Criteria1:= _ rAnwender.Value lRow = .Cells(.Rows.Count, QuelleSpalteKST).End(xlUp).Row If Not lRow = 1 Then 'denn dann wurden keine Einträge für diese Kst gefunden, _ ergo kein Mail nötig! 'gefilterten Bereich und Überschriften kopieren Sheets(QuelleSheet).UsedRange.SpecialCells(xlCellTypeVisible).Copy 'neues Workbook öffnen und merken - neues Workbook ist automatisch im Focus! Workbooks.Add Set wkbNew = ActiveWorkbook 'gefilterte Tabelle einfügen und Spaltenbreiten anpassen With ActiveSheet .Range("A1").PasteSpecial .Cells.EntireColumn.AutoFit End With 'neues Workbook speichern (Displayalerts gegen "Datei existiert schon" Dialog) NameOfSave = PfadSpeichern & "\" & NameSpeichern & rAnwender.Offset(0, 1).Value _ _ & ".xlsx" Application.DisplayAlerts = False wkbNew.SaveAs Filename:=NameOfSave, FileFormat:=xlOpenXMLWorkbook, CreateBackup: _ _ =False wkbNew.Close False Application.DisplayAlerts = True wkbOld.Activate 'Zur sicherheit 'Individualisierte Mail mit Anhang senden TextPerson = MailText1 & rAnwender.Offset(0, 1).Value & MailText2 Call SendWithOutlook(MailSubject & rAnwender.Offset(0, 1).Value, rAnwender. _ Offset(0, 2).Value, "", TextPerson, NameOfSave) End If Next rAnwender End With GoTo heaven: hell: Application.EnableEvents = True MsgBox "Fehler in Sub FiltereProAnwender" & vbCrLf _ & "Fehlernummer: " & Err.Number & _ vbCrLf & "Fehlerbeschreibung: " & Err.Description heaven: End Sub Private Sub SendWithOutlook(sSubject As String, sTo As String, sCC As String, sText As String, _ _ _ AWS As String) 'Sub to send Excel-Sheet directly with outlook Dim olApp As Object Dim olOldBody As String 'Make Email Set olApp = CreateObject("Outlook.Application") With olApp.CreateItem(0) .GetInspector.Display olOldBody = .htmlBody .To = sTo .cc = sCC .Subject = sSubject .htmlBody = sText & olOldBody .Attachments.Add AWS End With End Sub

Meine Liste und die zu Suchenden Kriterien haben sich mittlerweile geändert und sollten nun folgende Auswahlkriterien erfüllen:
Filtere AKTIV nach Kostenstelle ab der Spalte B15
Filtere Aktiv ab der Spalte J15 ("Nächste Schulung bis") nach Datum minus 30 Tage. Wenn dieses das heutige Tagesdatum erreicht sollen die Daten der Person mit der Maske von A13 bis U14 ausgewählt werden, in eine neue Liste gespeichert und Outlook angesteuert werden.
Ein Abbruch soll erzeugt werden sobald in L14 ein Eintrag vorhanden ist. Diese Person soll dann von den Erinnerungen ausgenommen sein.
Anbei noch die anonymisierte Datei
https://www.herber.de/bbs/user/86678.xlsm
Kann mir bitte jemand sagen wie ich diese Kriterien in dem code verändert bekomme oder einen Tipp geben wo ich ansetzen sollte?
Besten Dank für eure Bemühungen
Schöne Grüße
Daniel

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Auswahlkriterien MailGefiltertProAnwender
03.08.2013 03:15:57
fcs
Hallo Daniel,
es bestand jetzt keine Notwendigkeit, deine Frage hier ein 2. mal zu stellen. Wenn es denn unbedingt sein muss, dann hättest du auf deien 1. Frage nochmal geantwortet - mit einer Bitte um Hilfe - und die Frage offen gelassen.
Es ist schon sehr mühselig sich durch ein umfangreiches fremderstelltes Makro zu arbeiten, um dann all jene Stellen zu finden, die anzupassen sind, weil du nun einen anderen Aufbau der Tabellen hast und Änderungen bei den Filterkriterien.
Und Ich ab da auch noch Verständnisfragen da deine Erläuterung mir nicht 100% klar sind:
1. Schaltfläche "Filtern" im Blatt "Liste"
Welches Filterkriterium soll hier jetzt gelten?
Nur die Kostenstelle oder Kostenstelle UND Schulungsart
2. Schaltfläche "Generierung von monatlichen Erinnerungsschreiben"
Ich verstehe deine Beschreibung so:
Filtere nach Spalte J "Nächste Schulung bis" alle, die im Zeitraum HEUTE bis HEUTE + 30 Tage fällig sind, UND in Spalte L leer sind.
Erstelle für jede Person in der gefilteren Liste eine E-Mail bestehend aus dem Zellbereich A13:U14 und der jeweilen Zeile zur Person.
Soweit ich bisher feststellen konnte hat Klaus sehr viele der erforderlicehn Einstellungen über Konstanten für Zeilen und Spalten festgelegt. Diese mussen jetz an den Aufbau des Blattes Liste angepasst werden. Auf die Schnelle konnte ich das jetzt aber nicht machen, da ja dann auch die Makros getestet werden müssen inkl. Outlook-Anbindung.
Ein paar Kleinigkeiten sind mir aber jetzt schon aufgefallen, die zu Fehlern führen können, und Korrekturen erfordern.
Gruß
Franz
Gruß
Franz

Anzeige
AW: Auswahlkriterien MailGefiltertProAnwender
03.08.2013 09:42:35
fcs
Hallo Daniel,
ich hab die Makros in der Datei überarbeitet.
Es waren doch sehr viele kleine und größere Baustellen bis alles rund lief.
Zusätzlich hab ich 3 Sachen eingebaut.
1. vorbereiten des Autofilters, so dass in den Spalten beliebige Filter gesetzt werden können.
2. Die Möglichkeit die gefilterten Daten in eine neue Datei zu kopieren (ähnlich den Anhängen zu den Erinnerungs-mails.
3. Die Schulungsart in Zelle B8 kann jetzt so gewählt werden, dass alle Schulungsarten zu einer Kostenstelle gelistet werden.
https://www.herber.de/bbs/user/86697.xlsm
Gruß
Franz

Anzeige
Vielen Dank
03.08.2013 10:59:12
Daniel
Hallo Franz,
Es ist genau so wie ich mir das vorgestellt habe. Werde es Montag gleich mit den Stammdaten erweitern. Ich bedanke mich von Herzen, es ist einfach stark was Ihr in dieser Community leistet, meine tiefste Anerkennung. Ich selber habe auch daraus gelernt, für die Zukunft nicht irgendwelche vba Aufträge anzunehmen die ich nicht erfüllen kann.
Ich wünsche dir alles gutes
Beste Grüße
Daniel

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige