Sub test()
Dim myDir$, x, myList(), i&, msg$, FileList
FileList = Array("APPVD", "CCVB", "SSSSVB")
myDir = CreateObject("WScript.Shell").SpecialFolders("desktop") & "\ABSI"
x = SearchFiles(myDir, "* *.*", 0, myList, myDir, FileList)
If IsEmpty(x) Then MsgBox "No file found": Exit Sub
For i = 1 To UBound(x, 2)
If myList(1, i) <> myList(2, i) Then
If Not IsFileOpen(x(1, i)) Then
Call CheckFolder(x(2, i))
Name x(1, i) As x(2, i)
Else
msg = msg & vbLf & x(1, i)
End If
End If
Next
If Len(msg) Then MsgBox "Follwing file(s) is/are currently in use", vbInformation, "Try later"
End Sub
Function SearchFiles(fPath$, myFileName$, n&, myList(), myDir, FileList) As Variant
Dim e, fso As Object, myFolder As Object, myFile As Object
Set fso = CreateObject("Scripting.FileSystemObject")
For Each myFile In fso.GetFolder(fPath).Files
If (Not myFile.Name Like "~$*") * (myFile.Name <> ThisWorkbook.Name) _
* (myFile.Name Like myFileName) Then
If IsNumeric(Application.Match(Split(fso.GetBaseName(myFile.Name))(0), FileList, 0)) Then
n = n + 1
ReDim Preserve myList(1 To 2, 1 To n)
myList(1, n) = myFile.Path
myList(2, n) = Join(Array(myDir, "YEAR_" & Year(myFile.DateLastModified), _
Split(fso.GetBaseName(myFile.Name))(0), "EXTRACTION_" & _
Choose(Month(myFile.DateLastModified), _
"JAN", "FEB", "MAR", "APR", "MAY", "JUN", "JUL", "AUG", "SEP", "OCT", "NOV", _
"DEC"), myFile.Name), "\")
End If
End If
Next
For Each myFolder In fso.GetFolder(fPath).SubFolders
SearchFiles = SearchFiles(myFolder.Path, myFileName, n, myList, myDir, FileList)
Next
SearchFiles = myList
End Function