Mappe 2 CEF.xlsm (Größe: 52,69 KB / Downloads: 2)
Vielen Dank für die Tipps.
Es muss wohl an der Zieldatei gelegen haben, ich habe einfach eine neue, leere Datei genommen und siehe da, es funktioniert.
Bei der Gelegenheit, ich habe mir ein Makro zusammengebaut, dass mir die gefilterten Werte in eine andere Datei untereinander wegschreibt.
Im Moment läuft es so:
Das Makro filtert den ersten Wert.
Daraus ergibt sich unterhalb der Tabelle mit Hilfe eine Formel.
Dann öffnet das Makro die Zieltabelle, schreibt Werte in die Zieltabelle rein und schließt die Datei wieder.
Das Makro filtert den nächsten Wert.
Öffnet wieder die Zieldatei, schreibt die Werte rein, solange bis der Filter damit durch ist.
Meine Frage, kann man sich das Öffnen und Schließen nicht sparen?
Gibt es die Möglichkeit, dass das Makro die Datei offen lässt und erst dann wieder schliesst, wenn alle Einträge gemacht worden sind?
Tabelle ist beigefügt.
Sub SortierenfürOutlookListe()
Dim SB
Columns("IV").Clear
Range(Range("a2"), Range("a2").End(xlDown)).Copy
Range("IV1").PasteSpecial (xlPasteValuesAndNumberFormats)
Range(Range("IV1"), Range("IV1").End(xlDown)).RemoveDuplicates Columns:=1, Header:=xlNo
Range("R129").Activate
For Each SB In Range(Range("IV1"), Range("IV1").End(xlDown)).Cells
Range("A1").AutoFilter Field:=1, Criteria1:="=" & SB.Value, Operator:=xlAnd ' wenn es kein Datum ist, Criteria1:= SB.value
'ActiveSheet.PrintOut
'Call PDF
ActiveSheet.Calculate
Application.Wait Now + TimeSerial(0, 0, 1) 'Pause zum anschauen am Bildschirm
Call übertragen
Next
Range("A1").AutoFilter Field:=1
ActiveSheet.Calculate
End Sub
und hier das Kopiermakro:
Sub übertragen()
'Pfad zur Zieldatei festlegen:
Const MasterDat As String = "C:\Users\andre\Desktop\Übersicht.xlsm" '<= Anpassen!
Dim wsQuelle As Worksheet
Dim wsZielTabelle As Worksheet
Dim lngZeile As Long, rngTmp As Range
'legt fest, dass das aktive Blatt als Quelle dient
Set wsQuelle = ActiveSheet
'Masterdatei öffnen
Set wsZielTabelle = Workbooks.Open(MasterDat).Worksheets("Übersicht") '<= anpassen!
'Daten übernehmen
With wsZielTabelle
'freie Zeile finden
Set rngTmp = .Cells.Find("*", , , , xlByRows, xlPrevious)
If Not rngTmp Is Nothing Then
lngZeile = rngTmp.Row + 1
Else
lngZeile = 2
End If
'Daten aus angegebenen Zellen in Ziel schreiben
.Cells(lngZeile, 1).Value = wsQuelle.Range("G131").Value
.Cells(lngZeile, 2).Value = wsQuelle.Range("G132").Value
.Cells(lngZeile, 3).Value = wsQuelle.Range("G135").Value
wsZielTabelle.Parent.Close savechanges:=True
End With
End Sub