1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94
|
Option Explicit
Sub ListerTousLesFichiersDoc(ByVal FeuilleRestitution As Worksheet, ByVal TitreRestitution As Long, ByVal LeDossier As String)
' D'après un mix des messages de Misange, Laurent Longre, Frédéric Sigonneau, Laurent Daures anciens du Mpfe sur Excelabo
' Dans cette configuration, nécessite de référencer les DLL "Microsoft Scripting Runtime" et "Microsoft Word"
Dim Fso As Scripting.FileSystemObject
Dim Dossier As Folder, SousRep As Folder
Dim Fichiers As Files
Dim MonFichier As File
Dim LigneEnCours As Long
On Error GoTo Fin
Application.ScreenUpdating = False
If VerifierLeChemin(LeDossier) = False Then
MsgBox "Le répertoire recherché n'existe pas !", vbCritical
GoTo Fin
End If
LigneEnCours = TitreRestitution + 1
Set Fso = CreateObject("Scripting.FileSystemObject")
Set Dossier = Fso.GetFolder(LeDossier)
If Dossier.Files.Count > 0 Then
Set Fichiers = Dossier.Files
For Each MonFichier In Fichiers
Select Case Fso.GetExtensionName(MonFichier)
Case "docm", "docx", "doc"
With FeuilleRestitution
.Cells(LigneEnCours, 1) = MonFichier.Name '.Name
.Cells(LigneEnCours, 2) = Dossier.Name
.Cells(LigneEnCours, 3) = MonFichier.DateCreated
.Cells(LigneEnCours, 4) = MonFichier.DateLastModified
.Hyperlinks.Add Anchor:=.Cells(LigneEnCours, 5), Address:=MonFichier.Path, TextToDisplay:=CStr(LigneEnCours - TitreRestitution)
LigneEnCours = LigneEnCours + 1
End With
End Select
Next MonFichier
Set Fichiers = Nothing
End If
' Traitement récursif des sous dossiers
'For Each SousRep In Dossier.SubFolders
' If SousRep.Files.Count > 0 Then
' Set Fichiers = SousRep.Files
' For Each MonFichier In Fichiers
' With FeuilleRestitution
' .Cells(LigneEnCours, 1) = MonFichier.Name '.Name
' .Cells(LigneEnCours, 2) = SousRep.Name
' .Cells(LigneEnCours, 3) = MonFichier.DateCreated
' .Cells(LigneEnCours, 4) = MonFichier.DateLastModified
' .Hyperlinks.Add Anchor:=.Cells(LigneEnCours, 5), Address:=MonFichier.Path & "\" & MonFichier.Name, TextToDisplay:=CStr(LigneEnCours - TitreRestitution)
' LigneEnCours = LigneEnCours + 1
' End With
' Next MonFichier
' Set Fichiers = Nothing
' End If
' Next SousRep
GoTo Fin
Fin:
Application.ScreenUpdating = True
Set Fichiers = Nothing
Set Dossier = Nothing
Set Fso = Nothing
End Sub
Function VerifierLeChemin(ByVal Chemin2 As String) As Boolean
Dim Fso As Object
VerifierLeChemin = False
Set Fso = CreateObject("Scripting.FileSystemObject")
VerifierLeChemin = Fso.FolderExists(Chemin2)
Set Fso = Nothing
End Function |
Partager