Using Nasted Dir

R

Roy Goldhammer

Hello there

I need to build program that search files in Directory, including its sub
directories

For this i thought to use Dir

The first Dir("*.mdb") returns the first MDB file and the dir() returns the
next MDB file until the Dir return ""

This works fine if i work on only one directory
But if i need to search in subDirectory I need dir() for sub dircetories and
Dir inside the directory (Nasted Dir)

And it don't work

Is there a way to use Nasted dir? or if not is there another way to recive
all the MDB Files that I have in some Directory
 
A

Albert D. Kallal

Sure, here is some sample code that I use:

Do note that this code uses "recusion" to call its self over and over for
each sub-dir. This neat idea saves LOTS of code!

Sub dirTest()

Dim dlist As New Collection
Dim startDir As String
Dim i As Integer

startDir = "C:\access\"
Call FillDir(startDir, dlist)

MsgBox "there are " & dlist.Count & " in the dir"

' lets printout the stuff into debug window for a test

For i = 1 To dlist.Count
Debug.Print dlist(i)
Next i

End Sub


Sub FillDir(startDir As String, dlist As Collection)

' build up a list of files, and then
' add add to this list, any additinal
' folders

Dim strTemp As String
Dim colFolders As New Collection
Dim vFolderName As Variant

strTemp = Dir(startDir)

Do While strTemp <> ""
dlist.Add startDir & strTemp
strTemp = Dir
Loop

' now build a list of additional folders
strTemp = Dir(startDir & "*.", vbDirectory)

Do While strTemp <> ""
If (strTemp <> ".") And (strTemp <> "..") Then
colFolders.Add strTemp
End If
strTemp = Dir
Loop

' now process each folder (recursion)
For Each vFolderName In colFolders
Call FillDir(startDir & vFolderName & "\", dlist)
Next vFolderName

End Sub
 
R

Roy Goldhammer

Thankes Albert

It is one of the solutions for studetns in Univesity. using Racursive
 

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

Top