参考这个
  
    如何用Dir()函数来列出C下所有TMP文件并且用文本框输出
 
 
  下面是一个列出指定目录下所有符合要求的文件名的函数:
  Public Function AutoListFiles(ByVal sDirName As String,ByVal FileFilter As String ) As Boolean
  On Error GoTo RF_ERROR
  Dim sName As String, sFile As String, sExt As String
  Dim sDirList() As String, iDirNum As Integer, i As Integer
  ′首先枚举所有文件
  sFile = Dir(sDirName + FileFilter, vbNormal + vbArchive + vbHidden)
  Do While Len(sFile) >0
  sFile = UCase(Trim(sFile))
  ′在此处可以将 sFile 加入到一个 Text 控件...
  sFile = Dir ′下一个文件
  Loop
  iDirNum = 0
  sName = Dir(sDirName + ″*.*″, vbDirectory + vbNormal)
  Do While Len(sName) >0
  If sName <> ″.″ And sName <> ″..″ Then
  iDirNum = iDirNum + 1
  ReDim Preserve sDirList(1 To iDirNum)
  sDirList(iDirNum) = sDirName + sName + ″\″
  End If
  sName = Dir ′下一个目录
  Loop
  For i = 1 To iDirNum
  AutoListFiles sDirList(i) ′递归调用
  Next
  End If
  RF_EXIT:
  AutoListFiles = True
  Exit Function
  RF_ERROR:
  MsgBox Err.Description, vbCritical, ″″
  Resume RF_EXIT
  End Function
  调用上述函数的示例:
  AutoListFiles(″C:\″,″*.TMP″)
  之所以采用上述先处理文件,再处理子目录,一是思路较清晰,另外也有模仿 Prolog 语言中的“尾递归”的想法,当然,VB中是不支持尾递归的。
 
   
 
  
 

解决方案 »

  1.   

    Dim MyFile, MyPath, MyName
    ' "WIN.INI" が存在する場合、そのファイル名を返します。
    MyFile = Dir("C:\WINDOWS\WIN.INI")   ' 指定した拡張子を持つファイル名を返します。複数の *.INI ファイル
    ' が存在すると、最初に見つかったファイル名を返します。
    MyFile = Dir("C:\WINDOWS\*.INI")' 引数を指定せずに再度 Dir 関数を呼び出すと、
    ' 同じフォルダにある次の *.INIファイルを返します。
    MyFile = Dir' 隠しファイル属性を持つ *.TXT ファイルであり、最初に見つかったファイル名を返します。
    MyFile = Dir("*.TXT", vbHidden)' C:\ 内のフォルダの名前を表示します。
    MyPath = "c:\"   ' パスを設定します。
    MyName = Dir(MyPath, vbDirectory)   ' 最初のフォルダ名を返します。
    Do While MyName <> ""   ' ループを開始します。
       ' 現在のフォルダと親フォルダは無視します。
       If MyName <> "." And MyName <> ".." Then
          ' ビット単位の比較を行い、MyName がフォルダかどうかを調べます。
          If (GetAttr(MyPath & MyName) And vbDirectory) = vbDirectory Then
             Debug.Print MyName      ' フォルダであれば、それを表示します。
          End If
       End If
       MyName = Dir               ' 次のフォルダ名を返します。
    Loop