bei der Anwendung der Funktion FileSearchINFO aus
https://www.herber.de/forum/archiv/1040to1044/t1040526.htm#1040532
ist mir etwas aufgefallen, das ich mir nicht erklären kann.
Die Funktion gibt das Suchergebnis als Variant-Array zurück, dessen Elemente
(nach der Abgabe im Überwachungsfenster) vom Typ Variant/Object/File sind.
Die Eigenschaften der gelisteten Files lassen sich auch schön abrufen und z. B. in eine Tabelle schreiben.
Das habe ich damit gemacht:
Sub ListFiles()
Dim result As Long, ii As Long, arrF
result = FileSearchINFO(arrF, "c:\temp\", "*.*", True)
If result > 0 Then
For ii = 0 To UBound(arrF)
If ii 0 0=Empty
MsgBox TypeName(arrF) ' Variant
MsgBox TypeName(arrF(0)) ' File, bei ii>0 Empty
Cells(1, 2) = arrF(0).Name ' bei ii>0 Error 424 - Objekt erforderlich
End If
With arrF(ii) ' im Überw.-fenster wird arrF(ii) empty !!
Cells(ii + 2, 1) = Left(.Path, Len(.Path) - Len(.Name) - 1)
Cells(ii + 2, 2) = .Name
Cells(ii + 2, 3) = .Size
Cells(ii + 2, 4) = .DateLastModified
End With
Next
End If
End Sub
Und nun die "Merkwürdigkeit":
Nach dem "With arrF(ii)" wird der Typ von arrF(ii) im Überw.-fenster auf "empty" geändert.
Bei ii=1 ist es nicht mehr möglich, noch einmal auf arrF(0) zuzugreifen. Die Anweisung
Cells(1, 2) = arrF(0).Name
führt zum Error 424 - Objekt erforderlich
Das wirkt auf mich wie eine Einmalpackung - Ex und Hopp...
Wie geht da die Info über die Struktur des Arrays verloren?
Sicher, man kann sich die Infos woanders "sicherer" ablegen. Aber ich würds halt gern verstehen!
In der Hoffnung auf Aufklärung - Grü0e von Erich aus Kamp-Lintfort
P.S.:
Sorry, eigentlich war das war keine Frage zu Sepps Funktion. Aber die Frage
nach der Überlebenszeit der Info hat sich mir bei deren Anwendung aufgetan
und ich war bisher zu faul, ein anderes Beispiel zu basteln...