2015-10-24 1 views
1

Je cherche un code qui compte le nombre de fichiers dans un dossier spécifique, qui ont une date de dernière modification spécifique: aujourd'hui - 90.fichiers Count Excel VBA dernière modification avant la date

Je ne travaillais en code compte TOUS les fichiers dans un dossier (ce qui fait partie de ce que je veux), mais je suis coincé sur le compte quand les fichiers sont plus anciens.

Toutes les suggestions grandement appréciées!

Sub CountFiles() 

Application.ScreenUpdating = False 
Application.DisplayAlerts = False 

'Set the paths 
Dim PathEvaluations As String 
Dim PathPDF As String 
Dim PathA As String 
Dim PathB As String 

Dim CountEvaluations As Integer 
Dim CountOldEvals As Integer 
Dim CountPDF As Integer 
Dim CountOldPDF As Integer 

Dim MsgBoxTitle As String 
Dim PurgeDate As Date 

PathEvaluations = Worksheets("References").Range("B50").Value 
PathPDF = Worksheets("References").Range("B51").Value 
MsgBoxTitle = Worksheets("References").Range("B32").Value 
PurgeDate = Worksheets("References").Range("B77").Value 

    PathA = PathEvaluations & "*.xlsx" 
    Filename = Dir(PathA) 

    Do While Filename <> "" 
     CountEvaluations = CountEvaluations + 1 
     Filename = Dir() 
    Loop 

    PathB = PathPDF & "*.pdf" 
    Filename = Dir(PathB) 

    Do While Filename <> "" 
     CountPDF = CountPDF + 1 
     Filename = Dir() 
    Loop 

MsgBox "System maintenance:" & vbNewLine & vbNewLine & _ 
    CountEvaluations & " files found in: evaluations folder" & vbNewLine & _ 
    "of which " & CountOldEvals & " are from before: " & PurgeDate & " and can be deleted!" & vbNewLine & vbNewLine & _ 
    CountPDF & " files found in: pdf folder" & vbNewLine & _ 
    "of which " & CountOldPDF & " are from before: " & PurgeDate & " and can be deleted!", vbInformation, MsgBoxTitle 


End Sub 
+0

Peut-on utiliser FileDateTime (FILEPATH)? Cela devrait retourner le datetime dans le fuseau horaire du PC local quand il a été créé/modifié pour la dernière fois – Lima

Répondre

0

Quelque chose comme ce qui suit devrait fonctionner:

Dim FileDate As Date 
Dim Minus90 As Date 
Minus90 = DateAdd("d", -90, Date) 

PathA = PathEvaluations & "*.xlsx" 
    Filename = Dir(PathA) 


    Do While Filename <> "" 
     CountEvaluations = CountEvaluations + 1 
     FileDate = FileDateTime(PathEvaluations & Filename) 
     If FileDate <= Minus90 Then 
     CountOldEvals = CountOldEvals + 1 
     End If 

     MsgBox (FileDate) 
     Filename = Dir() 
    Loop