CalcSize


Description:
This is a simple function that calls itself recursively to calculate the size of a directory, including all child directories.
 
Code:
Public Function CalcSize(ByVal sDir As String) As Long

    If Right(sDir, 1) <> "\" Then
        sDir = sDir & "\"
    End If

    Dim sFile As String
    Dim colDirs As Collection
    Set colDirs = New Collection
    
    sFile = Dir(sDir, vbDirectory + vbHidden + vbSystem)
    Do Until sFile = ""
        If sFile <> "." And sFile <> ".." Then
            If GetAttr(sDir & sFile) And vbDirectory Then
                colDirs.Add sDir & sFile & "\"
            Else
                CalcSize = CalcSize + FileLen(sDir & sFile)
            End If
        End If
        
        Debug.Print sFile
        
        sFile = Dir()
    Loop

    While colDirs.Count > 0
        CalcSize = CalcSize + CalcSize(colDirs.Item(1))
        colDirs.Remove 1
    Wend

    Set colDirs = Nothing
End Function
 
Sample Usage:
 
    Debug.Print CalcSize("c:\")