'*****************************************************************************************************
' ___ _ _______ __ _ ____ _ _ _______ ___ _ _ _ ___ _ _.
' // \\ /\\ // // \\ // // // // // // \\ // // // // \\ //| //
' //___// //__\ // //__// // // //__// // // // // // // // // // | //
' // // \\ // // \\ // // // \\ // // // // // // // // // | //
'// // // // // // // //___ // \\ // \\__// //__// //___ \\__// // |//
'****************************************************************************************************
'collection sub et fonction avec récursivité
'liste recursive d'un dossier avec lecture des propriétés
'date 18/08/2024
'librairie utilise shell Automation( en late binding)
'auteur :patricktoulon
'version :2
OptionOption Explicit
Sub test()
Dim chemin, table(1 To 100000, 1 To 150)
chemin = "K:\vba excel\01 HTML XML CDO OUTLOOK requete html"
ListeProprietesFichiers_getDetailsOf chemin, table
Cells.Clear
Application.ScreenUpdating = False
With Feuil1.[a1].Resize(UBound(table), 50)
.Value = table
Columns.AutoFit
.VerticalAlignment = xlCenter
End With
End Sub
Sub ListeProprietesFichiers_getDetailsOf(folder, ByRef table, Optional a As Long = 1)
Dim strFileName As Object, objFolder As Object, i As Byte, e, ProP$
Static objShell As Object: If a = 1 Then Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.Namespace(folder) 'Répertoire à traiter
For Each strFileName In objFolder.Items 'boucle sur tous les elements du repertoire
'Pour que les dosssiers ne soient pas pris en comptes
If strFileName.IsFolder = False Then
e = 0
a = a + 1
For i = 0 To 50
'Debug.Print objFolder.getDetailsOf(objFolder.Items, i)
' objFolder.getDetailsOf(objFolder.Items, i)'on obtient le nom de la propriété
'objFolder.getDetailsOf(strFileName, i) 'on obtient la valeur de la propriété
ProP = " Nom Taille Type d’élément Modifié le Date de création Date d’accès Attributs Type identifié Propriétaire Sorte Notation Auteurs Commentaires "
If ProP Like "* " & objFolder.getDetailsOf(objFolder.Items, i) & " *" Then
e = e + 1: table(a, e) = objFolder.getDetailsOf(strFileName, i)
table(1, e) = objFolder.getDetailsOf(objFolder.Items, i)
End If
Next
table(a, 14) = strFileName.Path
Else
'si c 'est un dossier on relance la fonction (appel récursifs)
ListeProprietesFichiers_getDetailsOf (strFileName.Path), table, a
End If
Next
End Sub