2017-07-17 1 views
1

J'ai rapports regroupés par mois dans l'arborescence des dossiersTrouver le dernier dossier nommé mois de sous-dossiers

« somepath \ AAAA \ MMMYYYY de »

Par exemple "somepath\2017\MAR2017". Évidemment, il peut y avoir jusqu'à 12 dossiers "MMMYYYY" dans le dossier Year. Le système télécharge les fichiers du dernier dossier identifié par mois dans son nom. C'est à dire. parmi les dossiers Jan2017, Feb2017, Mar2017 il devrait télécharger des fichiers de Mar2017.

J'ai essayé de convertir le foldername au numéro:

Dim fso : Set fso = CreateObject("Scripting.FileSystemObject") 
Dim ObjFolder : Set ObjFolder = fso.GetFolder("somepath\2017\") 
Set fc = ObjFolder.SubFolders 'here I should get all folders with months in their names 
For each f in fc 
a = Month("01-"&left(f.name, 3)&"-"&right(f.name, 4)) 
print a 
Next 

il imprime suivant:

La prochaine étape devrait être d'identifier le plus grand nombre de ceux-ci et de définir le nom dossier de travail comme

a = MonthName(maxnumber)&"2017" 
workingfolder = "somepath\2017\"&a&"\" 

Comment identifier ce nombre max ou mois max?

Répondre

1

qui suit travaillé:

Dim fso : Set fso = CreateObject("Scripting.FileSystemObject") 
Dim ObjFolder : Set ObjFolder = fso.GetFolder("somepath\2017\") 
Set fc = ObjFolder.SubFolders 
    For i=0 to fc.count 
     For each f in fc 
      a = Month("01-"&left(f.name, 3)&"-"&right(f.name, 4)) 
      Redim Preserve arr(fc.count) 
      arr(i)=a 
     Next 
    Next 
    arrLen = UBound(arr) 'Find the length of array 
    For j= 0 to arrLen 
    If arr(j) > max Then 
     max=arr(j) 
    End If 
    Next 
Dim OrgFolder : Set OrgFolder = fso.GetFolder(ObjFolder&"\"&MonthName(arr(0), True)&"2017\")