Sub LirePropriétésFichiersFermés_1()
Dim tStart As Double
Dim tablo, NomFich$, lgn%
tStart = Timer
'Récupérer les données du tableau structuré "_Liste"
tablo = sh_LstFich.[_Liste]
For lgn = 1 To UBound(tablo)
NomFich = tablo(lgn, Col_Path_R) & "\" & tablo(lgn, Col_Nom)
If NomFich <> "" Then
tablo(lgn, Col_Taille) = ListeProprietesFichier_getDetailsOf_1(NomFich, 1)
tablo(lgn, Col_AUTEUR) = ListeProprietesFichier_getDetailsOf_1(NomFich, 20)
tablo(lgn, Col_DateCréation) = ListeProprietesFichier_getDetailsOf_1(NomFich, 3)
tablo(lgn, Col_DateModif) = ListeProprietesFichier_getDetailsOf_1(NomFich, 4)
tablo(lgn, Col_DateAccès) = ListeProprietesFichier_getDetailsOf_1(NomFich, 5)
End If
Next
MsgBox "LirePropriétésFichiersFermés_1 : " & (Timer - tStart) & " secondes"
End Sub
Sub LirePropriétésFichiersFermés_2()
Dim tStart As Double
Dim tablo, NomFich$, lgn%
Dim NomRep As String, NomFic As String
tStart = Timer
'Récupérer les données du tableau structuré "_Liste"
tablo = sh_LstFich.[_Liste]
For lgn = 1 To UBound(tablo)
NomRep = tablo(lgn, Col_Path_R)
NomFic = tablo(lgn, Col_Nom)
If NomFic <> "" Then
tablo(lgn, Col_Taille) = ListeProprietesFichier_getDetailsOf_2(NomRep, NomFic, 1)
tablo(lgn, Col_AUTEUR) = ListeProprietesFichier_getDetailsOf_2(NomRep, NomFic, 20)
tablo(lgn, Col_DateCréation) = ListeProprietesFichier_getDetailsOf_2(NomRep, NomFic, 3)
tablo(lgn, Col_DateModif) = ListeProprietesFichier_getDetailsOf_2(NomRep, NomFic, 4)
tablo(lgn, Col_DateAccès) = ListeProprietesFichier_getDetailsOf_2(NomRep, NomFic, 5)
End If
Next
MsgBox "LirePropriétésFichiersFermés_2 : " & (Timer - tStart) & " secondes"
End Sub
Function ListeProprietesFichier_getDetailsOf_1(Fichier As String, pProp As Integer) As String
'Nécessite d'activer la référence Microsoft Shell Controls and Automation
'https://www.devhut.net/how-to-retrieve-a-files-properties-with-vba/
' 1 = taille
' 3 = date de modif
' 4 = date de création
' 5 = date d'accès
' 20 = auteur
Dim Fso As Object, oFichier As Object
Dim objShell As Shell32.Shell
Dim objFolder As Shell32.Folder
Dim strFileName As Shell32.FolderItem
Dim Chemin As String, NomFich As String
' si fichier n'exist pas on retournera vide
ListeProprietesFichier_getDetailsOf_1 = ""
On Error Resume Next
'-----
Set Fso = CreateObject("Scripting.FileSystemObject")
Set oFichier = Fso.GetFile(Fichier)
Chemin = Fso.GetParentFolderName(oFichier)
NomFich = Fso.GetFileName(oFichier)
'-----
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.Namespace(Chemin)
Set strFileName = objFolder.Items.Item(NomFich)
ListeProprietesFichier_getDetailsOf_1 = objFolder.GetDetailsOf(strFileName, pProp)
Set Fso = Nothing
Set oFichier = Nothing
Set objShell = Nothing
Set objFolder = Nothing
Set strFileName = Nothing
End Function
Function ListeProprietesFichier_getDetailsOf_2(pRepertoire As Variant, pNomFichier As Variant, pProp As Integer) As String
'NE Nécessite PAS d'activer la référence Microsoft Shell Controls and Automation
'https://www.devhut.net/how-to-retrieve-a-files-properties-with-vba/
Dim objShell As Object
Dim objFolder As Object
Dim strFileName As Object
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.Namespace(CStr(pRepertoire))
Set strFileName = objFolder.Items.Item(CStr(pNomFichier))
ListeProprietesFichier_getDetailsOf_2 = objFolder.GetDetailsOf(strFileName, pProp)
Set objShell = Nothing
Set objFolder = Nothing
Set strFileName = Nothing
End Function