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

Filtern und versenden

Filtern und versenden
12.04.2023 13:28:15
Tim

Hallo zusammen,

ich habe ein Makro welches mir dabei helfen soll, den Inhalt aus einer Tabelle an einen entsprechenden Empfänger zu senden, was in meinem bisherigen Anwendungsfall funktioniert.

Neu ist, dass ich zwei Filter benötige und die Filterung erst ab Zeile 3 starten kann, da die darüberliegenden Zeilen Überschriften tragen die ich benötige.

Wie kann ich erreichen, dass die zwei Filter ab Zeile 3 Anwendung finden und das Makro die Namen im ersten Filter durchläuft, damit jeder Empfänger seinen entsprechenden Datensatz erhält?


Sub Filtern_und_versenden()
Dim objDic As Object
Dim arrDaten
Dim varDaten
Dim ZählerFilter As Long
Dim AktuellesTB As String
Dim NeueDatei As String
Dim objOutlook As Object
Dim objMail As Object
Dim Übersicht As Worksheet


Set Übersicht = ThisWorkbook.Sheets("Übersicht")


Set objOutlook = CreateObject("Outlook.Application")

' prüfen ob Filter bereits gesetzt sind
If Übersicht.AutoFilterMode = False Then Übersicht.Rows(3).AutoFilter Field:=1
If Übersicht.AutoFilterMode Then Übersicht.AutoFilter.ShowAllData

Übersicht.Range(Übersicht.AutoFilter.Range.Address).AutoFilter Field:=3, Criteria1:="Mitarbeiter" '


'Filter setzen
Set objDic = CreateObject("Scripting.Dictionary")

With Übersicht
For ZählerFilter = 1 To .Cells(.Rows.Count, 1).End(xlUp).Row
If .Cells(ZählerFilter, 3) = "Mitarbeiter" Then
objDic(.Cells(ZählerFilter, 1).Text) = 0
End If
Next
End With

arrDaten = objDic.keys

'Filter durchlaufen
For ZählerFilter = 0 To UBound(arrDaten)
DB_Blatt.Range(DB_Blatt.AutoFilter.Range.Address).AutoFilter Field:=1, Criteria1:=arrDaten(ZählerFilter) 'jeweiliger Mitarbeiter


If arrDaten(ZählerFilter) > "" Then

'gefilterte Daten kopieren
DB_Blatt.Range("A1:O" & DB_Blatt.UsedRange.Rows.Count).SpecialCells(xlCellTypeVisible).Copy
'neue Arbeitsmappe öffnen und Daten einfügen
Workbooks.Add
AktuellesTB = ActiveWorkbook.Name
Workbooks(AktuellesTB).Worksheets("Tabelle1").Range("A1").PasteSpecial
'Datei speichern
Workbooks(AktuellesTB).Worksheets("Tabelle1").SaveAs Pfad2 & "\Mail\" & arrDaten(ZählerFilter) & ".xlsx", FileFormat:=xlOpenXMLWorkbook
NeueDatei = ActiveWorkbook.FullName
'aktuelle Datei schließen
Workbooks(Dir(NeueDatei)).Close

'neue Mail erzeugen
Set objMail = objOutlook.CreateItem(0)

With objMail
.To = arrDaten(ZählerFilter)
.Subject = "Betreff"
.Body = "Hallo "
.Attachments.Add NeueDatei 'Anhang
.send
End With
'aktuelle Datei schließen und löschen
Kill (NeueDatei)
End If

Next ZählerFilter


'Filter zurücksetzen
If DB_Blatt.AutoFilterMode Then DB_Blatt.AutoFilterMode = False

Set objDic = Nothing


End Sub

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Filtern und versenden
12.04.2023 13:51:44
Oberschlumpf
Hi Tim,

du bist heute doch auch nicht das erste Mal hier, oder?

Warum zeigst du, anstelle von nur Code, nicht gleich bitte per Upload eine Excel-Bsp-Datei mit ausreichend vielen Bsp-Daten UND dem Code?

Ciao
Thorsten


AW: Filtern und versenden
13.04.2023 09:45:31
Oberschlumpf
Hi Tim,

in deiner Bsp-Datei funktioniert der Code bis zu dieser Zeile
arrDaten = objDic.keys
In der Bsp-Datei fehlt der SET-Befehl für DB_Blatt, und auch das entsprechende Tabellenblatt fehlt.
Zeig bitte eine neue Bsp-Datei - mit allem - was erforderlich ist.

Dann schreibst du was von 2 Filtern - nach was genau für 2 Werte soll wo gefiltert werden?

Ciao
Thorsten


Anzeige
AW: Filtern und versenden
13.04.2023 12:38:10
Tim
Hallo Thorsten,

ich habe das Beispiel entsprechend angepasst. Mit den beiden Filtern möchte ich gern erreichen, dass nur Zeileneinträge berücksichtigt werden die in Spalte 3 den Status Mitarbeiter haben. Alle Einträge mit diesem Status, sollen dem entsprechenden Mitarbeiter als Kopie zur Verfügung gestellt werden, weshalb mein Ansatz ist, die Spalte 2 auch zu filtern und per Schleife zu durchlaufen.

https://www.herber.de/bbs/user/158698.xlsm


ich lass offen
13.04.2023 12:49:52
Oberschlumpf
Hi,

sorry, ich kann nich weiterhelfen, verstehe nich, was du in neuer Bsp-Datei, auch wieder ohne Bsp-Datenbank-Tabelle erreichen willst.
Ich bin raus - dir weiter viel Erfolg.

Ciao
Thorsten


Anzeige
AW: Filtern und versenden
13.04.2023 13:45:40
peterk
Hallo

Pfad2 ist nicht definiert ! (verwende "Option explicit" im Modulkopf damit soche Fehler sofort erkannt werden!).

Haupt Problem : Die verbunden Zeilen 3&4. Diese können bei aktivem Filter nicht kopiert werden! (Kannst Du einfach selbst ausprobieren: Filter setzen, Tabelle markieren , CTRL-C -- Fehlermeldung!) . Da dieser Verbund nur der Optik dient kannst Du ihn auch löschen.

Peter

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige