Home |
Search |
Today's Posts |
|
#1
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
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
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
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
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]() "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
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
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
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
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
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
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
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
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
![]()
Posted to microsoft.public.excel.programming
|
|||
|
|||
![]()
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 |
Display Modes | |
|
|
![]() |
||||
Thread | Forum | |||
How do I turn off "Initializing Folders" every time I open a file. | Excel Discussion (Misc queries) | |||
Convert cell "contents" into a "comment" | Excel Discussion (Misc queries) | |||
Excel - Golf - how to display "-2" as "2 Under" or "4"as "+4" or "4 Over" in a calculation cell | Excel Discussion (Misc queries) | |||
how to increase size of "name box" and "contents of cell " displa. | New Users to Excel | |||
"Search for files and folders" option doesnot work for 100% | Excel Discussion (Misc queries) |