Enumerate all subfolders?

R

Robert Crandal

My target folder is "C:\UserFolders". I would like to run a
search of this directory and obtain the names of all subfolders.
Im only searching for folder names, not filenames. Also, this
search should only go one level...I'm only interested in
obtaining the names of the folders that exist in the target
folder "C:\UserFolders".

Can someone show me how to do this? It would be nice if
I could store all the folder names in an array of strings. Or,
it would also be nice if I could just enumerate through
each folder string one at a time using a single string variable.

Thank you!
 
I

isabelle

hi Robert,

Sub List_SubFolders()
Dim fd As FileDialog, rw As Integer, sfd
Dim oFolder As String, fso As Object

'=============================================================
'you can replace this part by oFolder = "C:\UserFolders"

Set fd = Application.FileDialog(msoFileDialogFolderPicker)
With fd
.AllowMultiSelect = False
.Show
oFolder = .SelectedItems(1)
End With
'=============================================================

Set fso = CreateObject("Scripting.FileSystemObject")
Set sfoFolder = fso.getfolder(oFolder)

For Each sfd In sfoFolder.SubFolders
rw = rw + 1
Range("A" & rw) = Right(sfd, Len(sfd) - Len(sfoFolder) - 1)
Next
End Sub


--
isabelle



Le 2012-06-20 22:16, Robert Crandal a écrit :
 
I

isabelle

also for a single string variable,

Sub List_SubFolders()
Dim list()
Dim fd As FileDialog, fso As Object
Dim oFolder As String, n As Integer, i As Integer, sfd


Set fd = Application.FileDialog(msoFileDialogFolderPicker)
With fd
.AllowMultiSelect = False
.Show
oFolder = .SelectedItems(1)
End With

Set fso = CreateObject("Scripting.FileSystemObject")
Set sfoFolder = fso.getfolder(oFolder)

For Each sfd In sfoFolder.SubFolders
ReDim Preserve list(n)
list(n) = string_variable & Right(sfd, Len(sfd) - Len(sfoFolder) - 1)
n = n + 1
Next

'test
For i = LBound(list) To UBound(list)
Debug.Print list(i)
Next

End Sub



--
isabelle



Le 2012-06-21 00:05, isabelle a écrit :
 
R

Robert Crandal

One more question Isabelle.....

What is the data type for the "sfd" variable??
Is it an integer?? It's just sitting by itself on the line
where "rw" is defined as Integer. I've never seen that
type of variable definition before.

Thanks!
 
I

isabelle

hi Robert,

Dim sfoFolder As Object, sfd As Object

--
isabelle



Le 2012-06-21 02:12, Robert Crandal a écrit :
 
G

GS

In a For Each loop you can use Variant type or Object type. In
Isabelle's case, the type for variable 'sfd' defaults to Variant
because it was not declared explicitly. That causes some extra
processing so VB can determine/evaluate a type and so I prefer to
explicitly declare type to save the extra work on the part of VB. No
big deal for the odd use but if there's a lot of untyped vars it adds
up in procedure processing time.

In context of its use here I'd go with...

Dim oSubFldr As Object
OR
Dim sf As Variant

...so the code is better self documented as to 'type' and description. I
reserve something like 'sfd' for use as a counter because there's
nothing there to intuitively tell me its type. In Isabelle's example it
serves that purpose even though it's not actually counting, because it
is iterating a collection. Personally, I'd go with 'sf' because the 'd'
part doesn't associate to anything in my naming convention schema, but
that's just me. ('S'ub'F'olders!)

--
Garry

Free usenet access at http://www.eternal-september.org
ClassicVB Users Regroup!
comp.lang.basic.visual.misc
microsoft.public.vb.general.discussion
 

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