以下程序可参考:
Function FindFiles(path As String, SearchStr As String, _
       FileCount As Integer, DirCount As Integer)
      Dim FileName As String   ' Walking filename variable.
      Dim DirName As String    ' SubDirectory Name.
      Dim dirNames() As String ' Buffer for directory name entries.
      Dim nDir As Integer      ' Number of directories in this path.
      Dim i As Integer         ' For-loop counter.      On Error GoTo sysFileERR
      If Right(path, 1) <> "\" Then path = path & "\"
      ' Search for subdirectories.
      nDir = 0
      ReDim dirNames(nDir)
      DirName = Dir(path, vbDirectory Or vbHidden)  ' Even if hidden.
      Do While Len(DirName) > 0
         ' Ignore the current and encompassing directories.
         If (DirName <> ".") And (DirName <> "..") Then
            ' Check for directory with bitwise comparison.
            If GetAttr(path & DirName) And vbDirectory Then
               dirNames(nDir) = DirName
               DirCount = DirCount + 1
               nDir = nDir + 1
               ReDim Preserve dirNames(nDir)
               'List2.AddItem path & DirName ' Uncomment to list
            End If                           ' directories.
   sysFileERRCont:
         End If
         DirName = Dir()  ' Get next subdirectory.
      Loop      ' Search through this directory and sum file sizes.
      FileName = Dir(path & SearchStr, vbNormal Or vbHidden Or vbSystem _
      Or vbReadOnly)
      While Len(FileName) <> 0
         FindFiles = FindFiles + FileLen(path & FileName)
         FileCount = FileCount + 1
         ' Load List box
         List2.AddItem path & FileName & vbTab & _
            FileDateTime(path & FileName)   ' Include Modified Date
         FileName = Dir()  ' Get next file.
      Wend      ' If there are sub-directories..
      If nDir > 0 Then
         ' Recursively walk into them
         For i = 0 To nDir - 1
           FindFiles = FindFiles + FindFiles(path & dirNames(i) & "\", _
            SearchStr, FileCount, DirCount)
         Next i
      End If   AbortFunction:
      Exit Function
   sysFileERR:
      If Right(DirName, 4) = ".sys" Then
        Resume sysFileERRCont ' Known issue with pagefile.sys
      Else
        MsgBox "Error: " & Err.Number & " - " & Err.Description, , _
         "Unexpected Error"
        Resume AbortFunction
      End If
      End Function      Private Sub Command2_Click()
      Dim SearchPath As String, FindStr As String
      Dim FileSize As Long
      Dim NumFiles As Integer, NumDirs As Integer      Screen.MousePointer = vbHourglass
      List2.Clear
      SearchPath = Text1.Text
      FindStr = Text2.Text
      FileSize = FindFiles(SearchPath, FindStr, NumFiles, NumDirs)
      Text5.Text = NumFiles & " Files found in " & NumDirs + 1 & _
       " Directories"
      Text6.Text = "Size of files found under " & SearchPath & " = " & _
      Format(FileSize, "#,###,###,##0") & " Bytes"
      Screen.MousePointer = vbDefault
      End Sub   Private Sub Form_Load()
      Command1.Caption = "Use API code"
      Command2.Caption = "Use VB code"
      ' start with some reasonable defaults
      Text1.Text = "C:\My Documents\"
      Text2.Text = "*.*"
   End Sub