Private Sub Command1_Click()
Dim tot As Long
tot = GetDirTotalByte("c:\Program Files\")
Debug.Print tot
End SubPrivate Function GetDirTotalByte(CurrentPath As String, Optional i As Long) As Long
   Static totbyte As Long
   Dim nI As Integer, nDirectory As Integer
   Dim sFileName As String, sDirectoryList() As String
   'Initial totbyte, if it is not the Recursive call the function
   If i <> 1 Then
      totbyte = 0
   End If
   'First list all normal files in this directory
   sFileName = Dir(CurrentPath, vbNormal + vbHidden + vbReadOnly + vbSystem + vbArchive)
   Do While sFileName <> ""
      totbyte = totbyte + FileLen(CurrentPath + sFileName)
      sFileName = Dir
   Loop
   'Next build temporary list of subdirectories
   sFileName = Dir(CurrentPath, vbDirectory)
    Do While sFileName <> ""
       'Ignore current and parent directories
       If sFileName <> "." And sFileName <> ".." Then
          'Ignore nondirectories
           If GetAttr(CurrentPath & sFileName) _
                 And vbDirectory Then
              nDirectory = nDirectory + 1
              ReDim Preserve sDirectoryList(nDirectory)
              sDirectoryList(nDirectory) = CurrentPath & sFileName
           End If
       End If
       sFileName = Dir
     Loop
    'Recursively process each directory
     For nI = 1 To nDirectory
         GetDirTotalByte sDirectoryList(nI) & "\", 1
     Next nI
     GetDirTotalByte = totbyte
    End Function

解决方案 »

  1.   

    '*****************************************
       '功能说明:得到目录(folderspec)下的所有文件大小总和
       
        dim fs, fc
        Dim f As Folder
        Set fs = CreateObject("Scripting.FileSystemObject")
        Set f = fs.GetFolder(folderspec)
           
           '计算文件总和
        FilesSize = 0
        Set tempFiles = f.Files
        Dim tempFile As File
        For Each tempFile In tempFiles
           FilesSize = FilesSize + tempFile.Size
        Next
        MsgBox FilesSize / 1024 & "k"
      Exit Sub
      

  2.   

    sorry,应该是:
    Public Sub CalculateSizeBelongToFolder(folderspec)   '功能说明:得到目录(folderspec)下的所有文件大小总和
       
        dim fs, fc
        Dim f As Folder
        Set fs = CreateObject("Scripting.FileSystemObject")
        Set f = fs.GetFolder(folderspec)
           
           '计算文件总和
        FilesSize = 0
        Set tempFiles = f.Files
        Dim tempFile As File
        For Each tempFile In tempFiles
           FilesSize = FilesSize + tempFile.Size
        Next
        MsgBox FilesSize / 1024 & "k"
      Exit Sub