Dir function resetting

  • Thread starter Thread starter Guest
  • Start date Start date
G

Guest

I am trying to use the Dir function to loop through folders in specified
directories, and again to loop through the files in those folders, but my
second Dir is messing with the first one (“RecFile = Dir†in inner loop makes
“Folder=Dir†in outer loop no longer work).

I have tried putting the inner loop in it's own procedure and calling it
within the outer loop, to no avail. Any suggestions?



Dim FolderPath As String
Dim Folder As String
Dim RecFile As String

Public Sub Create_File_List()
Folder = Dir(FolderPath, vbDirectory)
Do While Folder <> ""
If Folder <> "." And Folder <> ".." Then
If (GetAttr(FolderPath & Folder) And vbDirectory) = vbDirectory Then

RecFile = Dir(FolderPath & Folder & "\*-pt.xls")

Do Until RecFile = ""

‘insert some formulas, yadda yadda yadda

RecFile = Dir

Loop

End If
End If
Folder = Dir
Loop

End Sub
 
try to modify this idea to suit

Sub anotherfindfiles()
Application.ScreenUpdating = False
Dim FN As String ' For File Name
Dim ThisRow As Long
Dim MediaFileLocation As String
MediaFileLocation = "c:\yourfolder\*.mp3"
FN = Dir(MediaFileLocation)
Do Until FN = ""
ThisRow = ThisRow + 1
Cells(ThisRow, 1) = FN
FN = Dir
Loop
Application.ScreenUpdating = True
End Sub
 
You could use your current procedure to go 1 level of folders deep. Is that
what you want or do you want to examine all folders below the specified
folder, no matter the depth?
 
Maybe I'm missing something, but wouldn't I have to specify each of the
folder names? I have sixty of them (12 each in 5 directories), and don't
want to list them all in the code, if possible.
 
Yes, I only need to go one level deep within each of the directories - each
of the 5 directories has 12 folders within it (for months of the year), and I
would only need the files within there. There should not be any folders
within the monthly folders, just files.
 
Dim FolderPath As String
Dim Folder As String
Dim RecFile As String

Public Sub Create_File_List()
dim v(1 to 12) as String
dim i as Long
i = 1
Folder = Dir(FolderPath, vbDirectory)
Do While Folder <> ""
If Folder <> "." And Folder <> ".." Then
If (GetAttr(FolderPath & Folder) And vbDirectory) = vbDirectory Then
v(i) = Folder
i = i + 1
End if
Folder = Dir()
Loop

for i = 1 to 12
Folder = v(i)
if len(trim(folder)) <> then
RecFile = Dir(FolderPath & Folder & "\*-pt.xls")
Do Until RecFile = ""

'insert some formulas, yadda yadda yadda

RecFile = Dir

Loop
End If

Next
End Sub
 
Awesome! This is exactly what I needed!

Tom Ogilvy said:
Dim FolderPath As String
Dim Folder As String
Dim RecFile As String

Public Sub Create_File_List()
dim v(1 to 12) as String
dim i as Long
i = 1
Folder = Dir(FolderPath, vbDirectory)
Do While Folder <> ""
If Folder <> "." And Folder <> ".." Then
If (GetAttr(FolderPath & Folder) And vbDirectory) = vbDirectory Then
v(i) = Folder
i = i + 1
End if
Folder = Dir()
Loop

for i = 1 to 12
Folder = v(i)
if len(trim(folder)) <> then
RecFile = Dir(FolderPath & Folder & "\*-pt.xls")
Do Until RecFile = ""

'insert some formulas, yadda yadda yadda

RecFile = Dir

Loop
End If

Next
End Sub
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Back
Top