Reply
 
LinkBack Thread Tools Search this Thread Display Modes
  #1   Report Post  
Posted to microsoft.public.excel.programming
Don Don is offline
external usenet poster
 
Posts: 487
Default "Listing Contents of Sub-Folders"

Here's a snippit of code (attached to a userform) that I use to list files
contained in a folder. This code only picks up files contained in the folder
selected and not in any sub-folders of that folder. What change(s) do I need
to make so that the code identifies files contained in sub-floders also?

If OptionButton1 Then
EXT = "*.MP3"
ElseIf OptionButton2 Then
EXT = "*.CDG"
ElseIf OptionButton3 Then
EXT = "*.ZIP"
ElseIf OptionButton4 Then
EXT = "*.*"
End If
With Application.FileDialog(msoFileDialogFolderPicker)
.Show
ThePath = .SelectedItems(1) & "\"
End With
fname = Dir(ThePath & EXT)

TIA...Don
  #2   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 128
Default "Listing Contents of Sub-Folders"

On Oct 28, 8:01 pm, Don wrote:
Here's a snippit of code (attached to a userform) that I use to list files
contained in a folder. This code only picks up files contained in the folder
selected and not in any sub-folders of that folder. What change(s) do I need
to make so that the code identifies files contained in sub-floders also?

If OptionButton1 Then
EXT = "*.MP3"
ElseIf OptionButton2 Then
EXT = "*.CDG"
ElseIf OptionButton3 Then
EXT = "*.ZIP"
ElseIf OptionButton4 Then
EXT = "*.*"
End If
With Application.FileDialog(msoFileDialogFolderPicker)
.Show
ThePath = .SelectedItems(1) & "\"
End With
fname = Dir(ThePath & EXT)

TIA...Don


Hello Don,

All system file viewers show only the contents of the directory (last
folder in the path). None will identify specified file types in the
sub-folders. If you had only 2 or 3 sub-folders, you could create
another form with a ListBox for each sub-folder. If you are dealing
with an unknown number of sub-files then creating ListBoxes for each
sub-folder becomes problematic.

Sincerely,
Leith Ross

  #3   Report Post  
Posted to microsoft.public.excel.programming
Don Don is offline
external usenet poster
 
Posts: 487
Default "Listing Contents of Sub-Folders"



"Leith Ross" wrote:

On Oct 28, 8:01 pm, Don wrote:
Here's a snippit of code (attached to a userform) that I use to list files
contained in a folder. This code only picks up files contained in the folder
selected and not in any sub-folders of that folder. What change(s) do I need
to make so that the code identifies files contained in sub-floders also?

If OptionButton1 Then
EXT = "*.MP3"
ElseIf OptionButton2 Then
EXT = "*.CDG"
ElseIf OptionButton3 Then
EXT = "*.ZIP"
ElseIf OptionButton4 Then
EXT = "*.*"
End If
With Application.FileDialog(msoFileDialogFolderPicker)
.Show
ThePath = .SelectedItems(1) & "\"
End With
fname = Dir(ThePath & EXT)

TIA...Don


Hello Don,

All system file viewers show only the contents of the directory (last
folder in the path). None will identify specified file types in the
sub-folders. If you had only 2 or 3 sub-folders, you could create
another form with a ListBox for each sub-folder. If you are dealing
with an unknown number of sub-files then creating ListBoxes for each
sub-folder becomes problematic.

Sincerely,
Leith Ross



Thanks Leith for the quick reply,

Was hoping there was a way but if not, so be it. I do have quite a number
of sub-folders (several thousand within one main folder), each with only two
or three files in them. Within each sub-folder, each file is titled exactly
the same with only the extension being different. My goal is to be able to
secure a list of all titles. Guess I'll have to rearrange the contents of my
folders.

Thanks again,

Don
  #4   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 10,593
Default "Listing Contents of Sub-Folders"

Filesearch has a subfolders property, but be aware this has been removed in
Excel 2007.

--
---
HTH

Bob

(there's no email, no snail mail, but somewhere should be gmail in my addy)



"Don" wrote in message
...
Here's a snippit of code (attached to a userform) that I use to list files
contained in a folder. This code only picks up files contained in the
folder
selected and not in any sub-folders of that folder. What change(s) do I
need
to make so that the code identifies files contained in sub-floders also?

If OptionButton1 Then
EXT = "*.MP3"
ElseIf OptionButton2 Then
EXT = "*.CDG"
ElseIf OptionButton3 Then
EXT = "*.ZIP"
ElseIf OptionButton4 Then
EXT = "*.*"
End If
With Application.FileDialog(msoFileDialogFolderPicker)
.Show
ThePath = .SelectedItems(1) & "\"
End With
fname = Dir(ThePath & EXT)

TIA...Don



  #5   Report Post  
Posted to microsoft.public.excel.programming
Don Don is offline
external usenet poster
 
Posts: 487
Default "Listing Contents of Sub-Folders"

Bob...I am using 2002 but don't seem to be able to get a handle on this. I
response to Leith explains my goal. Thanks for the reply,

Don

"Bob Phillips" wrote:

Filesearch has a subfolders property, but be aware this has been removed in
Excel 2007.

--
---
HTH

Bob

(there's no email, no snail mail, but somewhere should be gmail in my addy)



"Don" wrote in message
...
Here's a snippit of code (attached to a userform) that I use to list files
contained in a folder. This code only picks up files contained in the
folder
selected and not in any sub-folders of that folder. What change(s) do I
need
to make so that the code identifies files contained in sub-floders also?

If OptionButton1 Then
EXT = "*.MP3"
ElseIf OptionButton2 Then
EXT = "*.CDG"
ElseIf OptionButton3 Then
EXT = "*.ZIP"
ElseIf OptionButton4 Then
EXT = "*.*"
End If
With Application.FileDialog(msoFileDialogFolderPicker)
.Show
ThePath = .SelectedItems(1) & "\"
End With
fname = Dir(ThePath & EXT)

TIA...Don






  #6   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 9,101
Default "Listing Contents of Sub-Folders"

Below I copied the example code from VBA help for subfolders. the code is
written for fileSearch which may not work on Excel 2007 but will work for
excel 2003. there arre similar methods that can be used without fileSearch.
You can use DIR instead of the FileSeaqrch methods. I have written similar
code, but it is not as well documented as the code below.

I put my code that gets every file and puts the filename and size on a
worksheet after the code I found in the VBA help.

VBA help code

Sub SearchEveryFolder()

'Declare variables that reference a
'SearchScope and a ScopeFolder object.
Dim ss As SearchScope
Dim sf As ScopeFolder

'Declare a variable to act as a generic counter.
Dim lngCount As Long

'Use a With...End With block to reference the
'FileSearch object.
With Application.FileSearch

'Clear all the parameters of the previous searches.
'This method doesn't clear the LookIn property or
'the SearchFolders collection.
.NewSearch

'Specify the type of file for which to search.
'Use the FileType property to specify the first type
'and then add additional types to the FileTypes collection.
.FileType = msoFileTypeWebPages
.FileTypes.Add msoFileTypeExcelWorkbooks

'Clear the SearchFolder collection by
'looping through each ScopeFolder object
'and removing it.
For lngCount = 1 To .SearchFolders.Count
.SearchFolders.Remove lngCount
Next lngCount

'Loop through the SearchScopes collection to find
'the scope in which you want to search. In this
'case the scope is the local machine.
For Each ss In .SearchScopes
Select Case ss.Type
Case msoSearchInMyComputer

'Loop through each ScopeFolder in
'the ScopeFolders collection of the
'SearchScope object.
For Each sf In ss.ScopeFolder.ScopeFolders

'Call a function that loops through all
'of the subfolders of the root ScopeFolder.
'This function adds any folders named "1033" to the
'SearchFolders collection.
Call OutputPaths(sf.ScopeFolders, "1033")

Next sf
Case Else
End Select
Next ss

'Test to see if any ScopeFolders collections were added to
'the SearchFolders collection.
If .SearchFolders.Count 0 Then

'Set the LookIn property to the path of
'the first ScopeFolder object in the SearchFolders
'collection. This is here so that any previous
'setting of the LookIn property doesn't affect
'the search.
.LookIn = .SearchFolders.Item(1).Path

'Execute the search and test to see if any files
'were found.
If .Execute < 0 Then

'Display the number of files found.
MsgBox "Files found: " & .FoundFiles.Count

'Loop through the list of found files and
'display the path of each one in a message box.
For lngCount = 1 To .FoundFiles.Count
If MsgBox(.FoundFiles.Item(lngCount), vbOKCancel, _
"Found files") = vbCancel Then

'Break out of the loop
lngCount = .FoundFiles.Count

End If
Next lngCount
End If
End If
End With
End Sub

'This subroutine loops through all of the ScopeFolders collections
'in a given ScopeFolders collection. It adds any folder
'that has the same name as the value of strFolder
'to the SearchFolders collection.
Sub OutputPaths(ByVal sfs As ScopeFolders, _
ByRef strFolder As String)

'Declare a variable as a ScopeFolder object
Dim sf As ScopeFolder

'Loop through each ScopeFolder object in the
'ScopeFolders collection.
For Each sf In sfs

'Test to see if the folder name of the ScopeFolder
'matches the value of strFolder. Use LCase to ensure
'that case does not affect the match.
If LCase(sf.Name) = LCase(strFolder) Then

'Add the ScopeFolder to the SearchFolders collection.
sf.AddToSearchFolders

End If

'Include a DoEvents call because there is the potential for this
'loop to last a long time. The DoEvents call allows this process to
'continue handling events.
DoEvents

'Test to see if the ScopeFolders collection in the
'current ScopeFolder is empty. If it isn't empty, then
'that means that the current ScopeFolder object contains subfolders.
If sf.ScopeFolders.Count 0 Then

'This subroutine recursively calls itself so that
'it can add the subfolders of the current ScopeFolder object
'to the SearchFolders collection.
Call OutputPaths(sf.ScopeFolders, strFolder)

End If
Next sf
End Sub

----------------------------------------------------------------------
My code which lists every file found on a worksheet


Dim RowNumber
Sub GetFolderSize()

strFolder = "C:"
RowNumber = 1

Set fso = CreateObject _
("Scripting.FileSystemObject")
Set folder = _
fso.GetFolder(strFolder)

Sheets(1).Cells(RowNumber, 1) = strFolder + "\"
Sheets(1).Cells(RowNumber, 2) = folder.Size
RowNumber = RowNumber + RowNumber

Call GetSubFolderSize(strFolder + "\")
End Sub

Sub GetSubFolderSize(strFolder)
Set fso = CreateObject _
("Scripting.FileSystemObject")

Set folder = _
fso.GetFolder(strFolder)

If folder.subfolders.Count 0 Then
For Each sf In folder.subfolders
On Error GoTo 100
Call GetSubFolderSize(strFolder + sf.Name + "\")
100 Next sf
End If
'folder size in bytes
On Error GoTo 200
If Not folder.isrootfolder Then
FolderSize = folder.Size
Sheets(1).Cells(RowNumber, 2) = FolderSize
Sheets(1).Cells(RowNumber, 1) = strFolder
RowNumber = RowNumber + 1
End If

200 On Error GoTo 0

End Sub



-----------------------------------------------------------------------


"Don" wrote:

Bob...I am using 2002 but don't seem to be able to get a handle on this. I
response to Leith explains my goal. Thanks for the reply,

Don

"Bob Phillips" wrote:

Filesearch has a subfolders property, but be aware this has been removed in
Excel 2007.

--
---
HTH

Bob

(there's no email, no snail mail, but somewhere should be gmail in my addy)



"Don" wrote in message
...
Here's a snippit of code (attached to a userform) that I use to list files
contained in a folder. This code only picks up files contained in the
folder
selected and not in any sub-folders of that folder. What change(s) do I
need
to make so that the code identifies files contained in sub-floders also?

If OptionButton1 Then
EXT = "*.MP3"
ElseIf OptionButton2 Then
EXT = "*.CDG"
ElseIf OptionButton3 Then
EXT = "*.ZIP"
ElseIf OptionButton4 Then
EXT = "*.*"
End If
With Application.FileDialog(msoFileDialogFolderPicker)
.Show
ThePath = .SelectedItems(1) & "\"
End With
fname = Dir(ThePath & EXT)

TIA...Don




  #7   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 863
Default "Listing Contents of Sub-Folders"

Here is code written some time ago by Bill Manville which does a recursive
search. The path and file name are returned in the array aFiles().

Call the sub with the full path to the top level directory, with or without
the ending backslash, e.g.

C:MyDocuments\ExcelFiles or C:MyDocuments\ExcelFiles\

Option Base 1
Dim aFiles() As String, iFile As Integer


Sub ListFilesInDirectory(Directory As String)
Dim aDirs() As String, iDir As Integer, stFile As String

' use Dir function to find files and directories in Directory
' look for directories and build a separate array of them
' note that Dir returns files as well as directories
'when vbDirectory specified

If Right$(Directory, 1) < Application.PathSeparator Then
Directory = Directory & Application.PathSeparator
End If

iDir = 0

stFile = Directory & Dir(Directory & "*.*", vbDirectory)
Do While stFile < Directory
If Right(stFile, 2) = "\." Or Right(stFile, 3) = "\.." Then
' do nothing - GetAttr doesn't like these directories
ElseIf (GetAttr(stFile) And vbDirectory) = vbDirectory Then
' add to local array of directories
iDir = iDir + 1
ReDim Preserve aDirs(iDir)
aDirs(iDir) = stFile
Else
' add to global array of files
iFile = iFile + 1
ReDim Preserve aFiles(iFile)
aFiles(iFile) = stFile
End If
stFile = Directory & Dir()
Loop

' now, for any directories in aDirs call self recursively
If iDir 0 Then
For iDir = 1 To UBound(aDirs)
ListFilesInDirectory aDirs(iDir) & Application.PathSeparator
Next iDir
End If
End Sub


On Mon, 29 Oct 2007 04:04:02 -0700, Joel
wrote:

Below I copied the example code from VBA help for subfolders. the code is
written for fileSearch which may not work on Excel 2007 but will work for
excel 2003. there arre similar methods that can be used without fileSearch.
You can use DIR instead of the FileSeaqrch methods. I have written similar
code, but it is not as well documented as the code below.

I put my code that gets every file and puts the filename and size on a
worksheet after the code I found in the VBA help.

VBA help code

Sub SearchEveryFolder()

'Declare variables that reference a
'SearchScope and a ScopeFolder object.
Dim ss As SearchScope
Dim sf As ScopeFolder

'Declare a variable to act as a generic counter.
Dim lngCount As Long

'Use a With...End With block to reference the
'FileSearch object.
With Application.FileSearch

'Clear all the parameters of the previous searches.
'This method doesn't clear the LookIn property or
'the SearchFolders collection.
.NewSearch

'Specify the type of file for which to search.
'Use the FileType property to specify the first type
'and then add additional types to the FileTypes collection.
.FileType = msoFileTypeWebPages
.FileTypes.Add msoFileTypeExcelWorkbooks

'Clear the SearchFolder collection by
'looping through each ScopeFolder object
'and removing it.
For lngCount = 1 To .SearchFolders.Count
.SearchFolders.Remove lngCount
Next lngCount

'Loop through the SearchScopes collection to find
'the scope in which you want to search. In this
'case the scope is the local machine.
For Each ss In .SearchScopes
Select Case ss.Type
Case msoSearchInMyComputer

'Loop through each ScopeFolder in
'the ScopeFolders collection of the
'SearchScope object.
For Each sf In ss.ScopeFolder.ScopeFolders

'Call a function that loops through all
'of the subfolders of the root ScopeFolder.
'This function adds any folders named "1033" to the
'SearchFolders collection.
Call OutputPaths(sf.ScopeFolders, "1033")

Next sf
Case Else
End Select
Next ss

'Test to see if any ScopeFolders collections were added to
'the SearchFolders collection.
If .SearchFolders.Count 0 Then

'Set the LookIn property to the path of
'the first ScopeFolder object in the SearchFolders
'collection. This is here so that any previous
'setting of the LookIn property doesn't affect
'the search.
.LookIn = .SearchFolders.Item(1).Path

'Execute the search and test to see if any files
'were found.
If .Execute < 0 Then

'Display the number of files found.
MsgBox "Files found: " & .FoundFiles.Count

'Loop through the list of found files and
'display the path of each one in a message box.
For lngCount = 1 To .FoundFiles.Count
If MsgBox(.FoundFiles.Item(lngCount), vbOKCancel, _
"Found files") = vbCancel Then

'Break out of the loop
lngCount = .FoundFiles.Count

End If
Next lngCount
End If
End If
End With
End Sub

'This subroutine loops through all of the ScopeFolders collections
'in a given ScopeFolders collection. It adds any folder
'that has the same name as the value of strFolder
'to the SearchFolders collection.
Sub OutputPaths(ByVal sfs As ScopeFolders, _
ByRef strFolder As String)

'Declare a variable as a ScopeFolder object
Dim sf As ScopeFolder

'Loop through each ScopeFolder object in the
'ScopeFolders collection.
For Each sf In sfs

'Test to see if the folder name of the ScopeFolder
'matches the value of strFolder. Use LCase to ensure
'that case does not affect the match.
If LCase(sf.Name) = LCase(strFolder) Then

'Add the ScopeFolder to the SearchFolders collection.
sf.AddToSearchFolders

End If

'Include a DoEvents call because there is the potential for this
'loop to last a long time. The DoEvents call allows this process to
'continue handling events.
DoEvents

'Test to see if the ScopeFolders collection in the
'current ScopeFolder is empty. If it isn't empty, then
'that means that the current ScopeFolder object contains subfolders.
If sf.ScopeFolders.Count 0 Then

'This subroutine recursively calls itself so that
'it can add the subfolders of the current ScopeFolder object
'to the SearchFolders collection.
Call OutputPaths(sf.ScopeFolders, strFolder)

End If
Next sf
End Sub

----------------------------------------------------------------------
My code which lists every file found on a worksheet


Dim RowNumber
Sub GetFolderSize()

strFolder = "C:"
RowNumber = 1

Set fso = CreateObject _
("Scripting.FileSystemObject")
Set folder = _
fso.GetFolder(strFolder)

Sheets(1).Cells(RowNumber, 1) = strFolder + "\"
Sheets(1).Cells(RowNumber, 2) = folder.Size
RowNumber = RowNumber + RowNumber

Call GetSubFolderSize(strFolder + "\")
End Sub

Sub GetSubFolderSize(strFolder)
Set fso = CreateObject _
("Scripting.FileSystemObject")

Set folder = _
fso.GetFolder(strFolder)

If folder.subfolders.Count 0 Then
For Each sf In folder.subfolders
On Error GoTo 100
Call GetSubFolderSize(strFolder + sf.Name + "\")
100 Next sf
End If
'folder size in bytes
On Error GoTo 200
If Not folder.isrootfolder Then
FolderSize = folder.Size
Sheets(1).Cells(RowNumber, 2) = FolderSize
Sheets(1).Cells(RowNumber, 1) = strFolder
RowNumber = RowNumber + 1
End If

200 On Error GoTo 0

End Sub



-----------------------------------------------------------------------


"Don" wrote:

Bob...I am using 2002 but don't seem to be able to get a handle on this. I
response to Leith explains my goal. Thanks for the reply,

Don

"Bob Phillips" wrote:

Filesearch has a subfolders property, but be aware this has been removed

in
Excel 2007.

--
---
HTH

Bob

(there's no email, no snail mail, but somewhere should be gmail in my

addy)



"Don" wrote in message
...
Here's a snippit of code (attached to a userform) that I use to list

files
contained in a folder. This code only picks up files contained in the
folder
selected and not in any sub-folders of that folder. What change(s) do

I
need
to make so that the code identifies files contained in sub-floders

also?

If OptionButton1 Then
EXT = "*.MP3"
ElseIf OptionButton2 Then
EXT = "*.CDG"
ElseIf OptionButton3 Then
EXT = "*.ZIP"
ElseIf OptionButton4 Then
EXT = "*.*"
End If
With Application.FileDialog(msoFileDialogFolderPicker)
.Show
ThePath = .SelectedItems(1) & "\"
End With
fname = Dir(ThePath & EXT)

TIA...Don



  #8   Report Post  
Posted to microsoft.public.excel.programming
Don Don is offline
external usenet poster
 
Posts: 487
Default "Listing Contents of Sub-Folders"

ty Myrna,

I'll try and make it work, but not sure my Xcel knowledge is adequate at
this time...but it's fun trying...thanks again,

Don

"Myrna Larson" wrote:

Here is code written some time ago by Bill Manville which does a recursive
search. The path and file name are returned in the array aFiles().

Call the sub with the full path to the top level directory, with or without
the ending backslash, e.g.

C:MyDocuments\ExcelFiles or C:MyDocuments\ExcelFiles\

Option Base 1
Dim aFiles() As String, iFile As Integer


Sub ListFilesInDirectory(Directory As String)
Dim aDirs() As String, iDir As Integer, stFile As String

' use Dir function to find files and directories in Directory
' look for directories and build a separate array of them
' note that Dir returns files as well as directories
'when vbDirectory specified

If Right$(Directory, 1) < Application.PathSeparator Then
Directory = Directory & Application.PathSeparator
End If

iDir = 0

stFile = Directory & Dir(Directory & "*.*", vbDirectory)
Do While stFile < Directory
If Right(stFile, 2) = "\." Or Right(stFile, 3) = "\.." Then
' do nothing - GetAttr doesn't like these directories
ElseIf (GetAttr(stFile) And vbDirectory) = vbDirectory Then
' add to local array of directories
iDir = iDir + 1
ReDim Preserve aDirs(iDir)
aDirs(iDir) = stFile
Else
' add to global array of files
iFile = iFile + 1
ReDim Preserve aFiles(iFile)
aFiles(iFile) = stFile
End If
stFile = Directory & Dir()
Loop

' now, for any directories in aDirs call self recursively
If iDir 0 Then
For iDir = 1 To UBound(aDirs)
ListFilesInDirectory aDirs(iDir) & Application.PathSeparator
Next iDir
End If
End Sub


On Mon, 29 Oct 2007 04:04:02 -0700, Joel
wrote:

Below I copied the example code from VBA help for subfolders. the code is
written for fileSearch which may not work on Excel 2007 but will work for
excel 2003. there arre similar methods that can be used without fileSearch.
You can use DIR instead of the FileSeaqrch methods. I have written similar
code, but it is not as well documented as the code below.

I put my code that gets every file and puts the filename and size on a
worksheet after the code I found in the VBA help.

VBA help code

Sub SearchEveryFolder()

'Declare variables that reference a
'SearchScope and a ScopeFolder object.
Dim ss As SearchScope
Dim sf As ScopeFolder

'Declare a variable to act as a generic counter.
Dim lngCount As Long

'Use a With...End With block to reference the
'FileSearch object.
With Application.FileSearch

'Clear all the parameters of the previous searches.
'This method doesn't clear the LookIn property or
'the SearchFolders collection.
.NewSearch

'Specify the type of file for which to search.
'Use the FileType property to specify the first type
'and then add additional types to the FileTypes collection.
.FileType = msoFileTypeWebPages
.FileTypes.Add msoFileTypeExcelWorkbooks

'Clear the SearchFolder collection by
'looping through each ScopeFolder object
'and removing it.
For lngCount = 1 To .SearchFolders.Count
.SearchFolders.Remove lngCount
Next lngCount

'Loop through the SearchScopes collection to find
'the scope in which you want to search. In this
'case the scope is the local machine.
For Each ss In .SearchScopes
Select Case ss.Type
Case msoSearchInMyComputer

'Loop through each ScopeFolder in
'the ScopeFolders collection of the
'SearchScope object.
For Each sf In ss.ScopeFolder.ScopeFolders

'Call a function that loops through all
'of the subfolders of the root ScopeFolder.
'This function adds any folders named "1033" to the
'SearchFolders collection.
Call OutputPaths(sf.ScopeFolders, "1033")

Next sf
Case Else
End Select
Next ss

'Test to see if any ScopeFolders collections were added to
'the SearchFolders collection.
If .SearchFolders.Count 0 Then

'Set the LookIn property to the path of
'the first ScopeFolder object in the SearchFolders
'collection. This is here so that any previous
'setting of the LookIn property doesn't affect
'the search.
.LookIn = .SearchFolders.Item(1).Path

'Execute the search and test to see if any files
'were found.
If .Execute < 0 Then

'Display the number of files found.
MsgBox "Files found: " & .FoundFiles.Count

'Loop through the list of found files and
'display the path of each one in a message box.
For lngCount = 1 To .FoundFiles.Count
If MsgBox(.FoundFiles.Item(lngCount), vbOKCancel, _
"Found files") = vbCancel Then

'Break out of the loop
lngCount = .FoundFiles.Count

End If
Next lngCount
End If
End If
End With
End Sub

'This subroutine loops through all of the ScopeFolders collections
'in a given ScopeFolders collection. It adds any folder
'that has the same name as the value of strFolder
'to the SearchFolders collection.
Sub OutputPaths(ByVal sfs As ScopeFolders, _
ByRef strFolder As String)

'Declare a variable as a ScopeFolder object
Dim sf As ScopeFolder

'Loop through each ScopeFolder object in the
'ScopeFolders collection.
For Each sf In sfs

'Test to see if the folder name of the ScopeFolder
'matches the value of strFolder. Use LCase to ensure
'that case does not affect the match.
If LCase(sf.Name) = LCase(strFolder) Then

'Add the ScopeFolder to the SearchFolders collection.
sf.AddToSearchFolders

End If

'Include a DoEvents call because there is the potential for this
'loop to last a long time. The DoEvents call allows this process to
'continue handling events.
DoEvents

'Test to see if the ScopeFolders collection in the
'current ScopeFolder is empty. If it isn't empty, then
'that means that the current ScopeFolder object contains subfolders.
If sf.ScopeFolders.Count 0 Then

'This subroutine recursively calls itself so that
'it can add the subfolders of the current ScopeFolder object
'to the SearchFolders collection.
Call OutputPaths(sf.ScopeFolders, strFolder)

End If
Next sf
End Sub

----------------------------------------------------------------------
My code which lists every file found on a worksheet


Dim RowNumber
Sub GetFolderSize()

strFolder = "C:"
RowNumber = 1

Set fso = CreateObject _
("Scripting.FileSystemObject")
Set folder = _
fso.GetFolder(strFolder)

Sheets(1).Cells(RowNumber, 1) = strFolder + "\"
Sheets(1).Cells(RowNumber, 2) = folder.Size
RowNumber = RowNumber + RowNumber

Call GetSubFolderSize(strFolder + "\")
End Sub

Sub GetSubFolderSize(strFolder)
Set fso = CreateObject _
("Scripting.FileSystemObject")

Set folder = _
fso.GetFolder(strFolder)

If folder.subfolders.Count 0 Then
For Each sf In folder.subfolders
On Error GoTo 100
Call GetSubFolderSize(strFolder + sf.Name + "\")
100 Next sf
End If
'folder size in bytes
On Error GoTo 200
If Not folder.isrootfolder Then
FolderSize = folder.Size
Sheets(1).Cells(RowNumber, 2) = FolderSize
Sheets(1).Cells(RowNumber, 1) = strFolder
RowNumber = RowNumber + 1
End If

200 On Error GoTo 0

End Sub



-----------------------------------------------------------------------


"Don" wrote:

Bob...I am using 2002 but don't seem to be able to get a handle on this. I
response to Leith explains my goal. Thanks for the reply,

Don

"Bob Phillips" wrote:

Filesearch has a subfolders property, but be aware this has been removed

in
Excel 2007.

--
---
HTH

Bob

(there's no email, no snail mail, but somewhere should be gmail in my

addy)



"Don" wrote in message
...
Here's a snippit of code (attached to a userform) that I use to list

files
contained in a folder. This code only picks up files contained in the
folder
selected and not in any sub-folders of that folder. What change(s) do

I
need
to make so that the code identifies files contained in sub-floders

also?

If OptionButton1 Then
EXT = "*.MP3"
ElseIf OptionButton2 Then
EXT = "*.CDG"
ElseIf OptionButton3 Then
EXT = "*.ZIP"
ElseIf OptionButton4 Then
EXT = "*.*"
End If
With Application.FileDialog(msoFileDialogFolderPicker)
.Show
ThePath = .SelectedItems(1) & "\"

Reply
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules

Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
How do I turn off "Initializing Folders" every time I open a file. BIOYA_2000[_2_] Excel Discussion (Misc queries) 1 May 9th 09 05:56 AM
Convert cell "contents" into a "comment" Ryan Excel Discussion (Misc queries) 4 October 3rd 08 11:34 PM
Excel - Golf - how to display "-2" as "2 Under" or "4"as "+4" or "4 Over" in a calculation cell Steve Kay Excel Discussion (Misc queries) 2 August 8th 08 01:54 AM
how to increase size of "name box" and "contents of cell " displa. Stubby- LIBERTY New Users to Excel 2 February 22nd 07 06:43 PM
"Search for files and folders" option doesnot work for 100% ECouwenberg Excel Discussion (Misc queries) 7 January 11th 06 04:50 PM


All times are GMT +1. The time now is 09:56 PM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Copyright ©2004-2025 ExcelBanter.
The comments are property of their posters.
 

About Us

"It's about Microsoft Excel"