This works very well, thanks to Mike Lacey who pointed me towards the code.<br><br><b><FONT FACE=monospace>'Module level code<br>Option Explicit <br>Const MAX_PATH = 260 <br>Const INVALID_HANDLE_VALUE = -1 <br>Const FILE_ATTRIBUTE_DIRECTORY = &H10 <br><br>Type FILETIME <br> dwLowDateTime As Long <br> dwHighDateTime As Long <br>End Type <br><br>Type WIN32_FIND_DATA <br> dwFileAttributes As Long <br> ftCreationTime As FILETIME <br> ftLastAccessTime As FILETIME <br> ftLastWriteTime As FILETIME <br> nFileSizeHigh As Long <br> nFileSizeLow As Long <br> dwReserved0 As Long <br> dwReserved1 As Long <br> cFileName As String * MAX_PATH <br> cAlternate As String * 14 <br>End Type <br><br>Type FOLDER_INFO <br> DirSize As Currency <br> FilesCount As Long <br> DirsCount As Long <br>End Type <br><br>Declare Function FindFirstFile Lib "kernel32" Alias "FindFirstFileA" (ByVal lpFileName As String, lpFindFileData As WIN32_FIND_DATA) As Long <br>Declare Function FindNextFile Lib "kernel32" Alias "FindNextFileA" (ByVal hFindFile As Long, lpFindFileData As WIN32_FIND_DATA) As Long <br>Declare Function FindClose Lib "kernel32" (ByVal hFindFile As Long) As Long <br>Public sFiles() As String <br><br>Public Function GetFolderInfo(sFolder As String, Optional sPattern As String = "*.*"

As FOLDER_INFO <br> If Right$(sFolder, 1) <> "\" Then sFolder = sFolder & "\" <br> Dim lFileNum As Long, lDirNum As Long, sTemp As String <br> Dim curSize As Currency, FolderQueue As New Collection <br> FolderQueue.Add sFolder <br> Call EnumFolder(FolderQueue) <br> sTemp = FolderQueue.Item(1) <br> Call EnumFiles(sTemp, lFileNum, curSize, sPattern) <br> FolderQueue.Remove 1 <br> Do While FolderQueue.Count > 0 <br> lDirNum = lDirNum + 1 <br> Call EnumFolder(FolderQueue) <br> sTemp = FolderQueue.Item(1) <br> Call EnumFiles(sTemp, lFileNum, curSize, sPattern) <br> FolderQueue.Remove 1 <br> DoEvents <br> Loop <br> GetFolderInfo.DirSize = curSize <br> GetFolderInfo.FilesCount = lFileNum <br> GetFolderInfo.DirsCount = lDirNum <br>End Function <br><br>Private Sub EnumFolder(FolderQueue As Collection) <br> Dim sTemp As String, sFolder As String <br> Dim lRet As Long, WFD As WIN32_FIND_DATA <br> Dim hFile As Long <br> sFolder = FolderQueue.Item(1) <br> hFile = FindFirstFile(sFolder & "*.*", WFD) <br> If hFile = INVALID_HANDLE_VALUE Then Exit Sub <br> sTemp = TrimNulls(WFD.cFileName) <br> Do While sTemp <> "" <br> If (WFD.dwFileAttributes And FILE_ATTRIBUTE_DIRECTORY) = FILE_ATTRIBUTE_DIRECTORY Then <br> If sTemp <> "." And sTemp <> ".." Then <br> If Right$(sTemp, 1) <> "\" Then sTemp = sTemp & "\" <br> FolderQueue.Add sFolder & sTemp <br> End If <br> End If <br> lRet = FindNextFile(hFile, WFD) <br> sTemp = "" <br> If lRet <> 0 Then sTemp = TrimNulls(WFD.cFileName) <br> Loop <br> lRet = FindClose(hFile) <br>End Sub <br><br>Private Sub EnumFiles(sFolder As String, lFileNum As Long, lngSize As Currency, sPattern As String) <br> Dim sTemp As String <br> Dim lRet As Long, WFD As WIN32_FIND_DATA <br> Dim hFile As Long, n As Integer <br> hFile = FindFirstFile(sFolder & sPattern, WFD) <br> If hFile = INVALID_HANDLE_VALUE Then Exit Sub <br> sTemp = TrimNulls(WFD.cFileName) <br> Do While sTemp <> "" <br> lngSize = lngSize + WFD.nFileSizeLow <br> lFileNum = lFileNum + 1 <br> n = UBound(sFiles) + 1 <br> ReDim Preserve sFiles

<br> sFiles

= sFolder & TrimNulls(WFD.cFileName) <br> lRet = FindNextFile(hFile, WFD) <br> sTemp = "" <br> If lRet <> 0 Then sTemp = TrimNulls(WFD.cFileName) <br> Loop <br> lRet = FindClose(hFile) <br>End Sub <br><br>Private Function TrimNulls(sTemp As String) As String <br> Dim l As Long <br> l = InStr(1, sTemp, Chr(0)) <br> If l = 1 Then <br> TrimNulls = "" <br> ElseIf l > 0 Then <br> TrimNulls = Left$(sTemp, l - 1) <br> Else <br> TrimNulls = sTemp <br> End If <br>End Function <br><br><br>'Form level code<br>Private Sub Command1_Click() <br> ReDim sFiles(0) <br> Dim l As FOLDER_INFO <br> l = GetFolderInfo("c:\", "*.*"

<br> MsgBox "Total " & l.DirSize & " bytes" & " in " & l.FilesCount & " files at " & l.DirsCount & " Folders" <br>'sFiles() array contains the full path to all files on C: <br> For i = 1 To UBound(sFiles) <br> Debug.Print sFiles(i) <br> Next i <br>End Sub <br></b></font> <p> <br><a href=mailto: > </a><br><a href=
plain black box</a><br>