用VB编程中,遇到以下两个问题:1)我想在一个目录下找出所有文件名带有ND字母的文件,
并且,把这些文件名存到一个数组里面。文件个数不定。2)对于以上找出的文件(文本文件),我想找出某些行中的某些字段。
请问怎么实现?人人有分。多谢多谢。

解决方案 »

  1.   

    第一个用dir(yourpath,vbmormal)函数
    第二个用open ,再用readline
      

  2.   

    Dim fileArr() As String, i As Long
    Private Sub SeachFile(ByVal strFolderPath As String)
        Dim Fso As Object
        Dim Fol As Object
        Dim Fil As Object
        Set Fso = CreateObject("Scripting.FileSystemObject")
        Set Fol = Fso.GetFolder(strFolderPath)
        
        For Each Fil In Fol.Files        If Fso.GetExtensionName(Fil.Path) = "txt" Then
                If InStr(Fil.Name, "ND") <> 0 Then
                    ReDim Preserve fileArr(i)
                    fileArr(i) = Fil.Path '把文件的全路径存入数组,如果只想存文件名,把Fil.Path改为Fil.Name
                    i = i + 1
                End If
            End If
        Next    For Each Fol In Fol.SubFolders
            SeachFile Fol  '如果不需要遍历子文件夹,把这句注释掉
        Next
    End Sub
    '调用
    Private Sub Command1_Click()
        SeachFile "D:\test\"
        MsgBox "符合条件的文件数为:" & UBound(fileArr) + 1
    End Sub
      

  3.   

    fraysky写得好详细阿2.还是用filesystem,fso的open函数,里面有更详细的参数。建立一个filesystem对象一看就知道了
      

  4.   

    文件名还是建议用递归来获得。
    第2个问题只能打开每个文本文件来遍历每一行。
    如果文件数据较多,或者内容比较多的话,很耗时间。
    建议楼主可以尝试建立一个副本,里面存放一些对应的关键字,直接查找副本,指向正本文件。
    如有a,b,c,d,e五个文本文件,则对应有一个content文本文件,里面有五行,分别存放对应的关键字,直接查找content,则可以找到对应的文件。
    这只是一种思路,供楼主参考。
      

  5.   

    我主张用 DIR 函数:Dim strFile As String
    Dim Files() As String
    Dim n As IntegerstrFile = Dir(myPath & "\*")Do Until strFile = ""
        Redim Preserve Files(n)
        Files(n) = strFile
        n = n + 1
        strFile = Dir
    Loop
    MsgBox "找到 " & n + 1 & " 个文件。"第二个问题请说明你的需求。
      

  6.   

    谢谢各位的帮助。我最后使用了dir函数解决问题。因为我对.net一点都不懂。正要学。现在结帖