Wie ich in meiner vorangegangene Antwort schon beschrieben hatte, sind
die Schleifen nicht ganz richtig, speziell die 2. for-next.
Die Chronologie der Dateien spielt dabei keine Rolle. Ich habe mal dein
Codebeispiel etwas umgeschrieben und um die Anzahl der Vergleiche zu
verringern mal anstatt des FileScriptingObject einfach den Dir Befehl
genommen. Wenn ich davon ausgehe, daß die ID etwas mit den Tagen im
Monat zu tun hat, dann müßte der "Buffer" auch auf 31 mögliche Tage
vergrößert werden
Hier mal eine andere Idee:
Dim avntRechnungen() As Variant
Dim avntAnlagen() As Variant
Public Sub Rechnungen(ByVal pID As Variant, ByVal pPath As String)
Const SQL_STMT As String = "SELECT Rechnungen.Datum_Rech,
Rechnungen.Betrag_Rech " _
& "FROM Rechnungen " _
& "WHERE [Rechnungen]![ABR_ID]={0} " _
& "ORDER BY Rechnungen.Datum_Rech;"
Dim strSQL As String
Dim rst As DAO.Recordset
Dim lngCount As Long
Dim strPath As String
Dim strFilename As String
Dim i As Long
If IsNull(pID) Then
Exit Sub
End If
Erase avntAnlagen
strSQL = Replace(SQL_STMT, "{0}", pID)
Set rst = CurrentDb.OpenRecordset(strSQL,
RecordsetTypeEnum.dbOpenSnapshot)
If rst.RecordCount <> 0 Then
rst.MoveLast
lngCount = rst.RecordCount
If lngCount > 31 Then
' errormsg
Else
ReDim avntRechnungen(lngCount - 1, 1)
rst.MoveFirst
Do Until rst.EOF
avntRechnungen(rst.AbsolutePosition, 0) = Format$(rst(0),
"yyyy\-mm\-dd")
avntRechnungen(rst.AbsolutePosition, 1) = rst(1)
rst.MoveNext
Loop
End If
strPath = pPath
For i = 0 To UBound(avntRechnungen)
strFilename = Dir(strPath & "\" & avntRechnungen(i, 0) & "*",
vbNormal)
If Len(strFilename) > 0 Then
Do
If (Not (avntAnlagen)) = -1 Then
ReDim avntAnlagen(0)
Else
ReDim Preserve avntAnlagen(UBound(avntAnlagen) + 1)
End If
avntAnlagen(UBound(avntAnlagen)) = strFilename
strFilename = Dir()
Loop Until Len(strFilename) = 0
End If
Next
End If
If Not rst Is Nothing Then
rst.Close
Set rst = Nothing
End If
End Sub
Nach Aufruf dieser Prozedur mit der ID (long) und dem Pfad stehen in den
beiden Arrays die Datumswerte und die dazu passenden Dateinamen.
Notfalls könnte man auch noch zusätzlich die Dateinamen mit einem
"Arraysort" sortieren und 'avntAnlagen' könnte man auch vom Datentyp
'String' definieren, wenn man es etwas resourcenschonender machen wollte.
Grüße
Ulrich