具体是这样的:
1、给出一段纯文本如"1234567ABCD";
2、在指定的目录下有n个纯文本文件;
3、对这n个纯文本文件的
   第4行第8个字符开始到第26个字符这一段(左对齐的)和
   第5行第8个字符开始到第26个字符这一段(左对齐的)和
   第6行第8个字符开始到第26个字符这一段(左对齐的)和
   第7行第8个字符开始到第26个字符这一段(左对齐的)
  进行查找是否含有字符串1234567ABCD;
   如果含有就把该文件名存放到一个FileList里面;没找到就Msgbox提示。
4、通过双击该FileList里面的文件可以用外部程序打开。我自己写了一个,碰到点问题。请各位不吝赐教!谢谢!!

解决方案 »

  1.   

    Open 语句
          能够对文件输入/输出 (I/O)。语法Open pathname For mode [Access access] [lock] As [#]filenumber [Len=reclength]Open 语句的语法具有以下几个部分:部分 描述 
    pathname 必要。字符串表达式,指定文件名,该文件名可能还包括目录、文件夹及驱动器。 
    mode 必要。关键字,指定文件方式,有 Append、Binary、Input、Output、或 Random 方式。如果未指定方式,则以 Random 访问方式打开文件。 
    access 可选。关键字,说明打开的文件可以进行的操作,有 Read、Write、或 Read Write 操作。 
    lock 可选。关键字,说明限定于其它进程打开的文件的操作,有 Shared、Lock Read、Lock Write、和 Lock Read Write 操作。 
    filenumber 必要。一个有效的文件号,范围在 1 到 511 之间。使用 FreeFile 函数可得到下一个可用的文件号。 
    reclength 可选。小于或等于 32,767(字节)的一个数。对于用随机访问方式打开的文件,该值就是记录长度。对于顺序文件,该值就是缓冲字符数。 
    说明对文件做任何 I/O 操作之前都必须先打开文件。Open 语句分配一个缓冲区供文件进行 I/O 之用,并决定缓冲区所使用的访问方式。如果 pathname 指定的文件不存在,那么,在用 Append、Binary、Output、或 Random 方式打开文件时,可以建立这一文件。如果文件已由其它进程打开,而且不允许指定的访问类型,则 Open 操作失败,而且会有错误发生。如果 mode 是 Binary 方式,则 Len 子句会被忽略掉。重要 在 Binary、Input 和 Random 方式下可以用不同的文件号打开同一文件,而不必先将该文件关闭。在 Append 和 Output 方式下,如果要用不同的文件号打开同一文件,则必须在打开文件之前先关闭该文件。
    Open 语句示例
    本示例示范 Open 语句的不同用法来做到文件的输出与输入。下列代码以顺序输入模式打开 TESTFILE 文件。Open "TESTFILE" For Input As #1
    ' 若要以其他方式打开文件,必需先关闭此文件。
    Close #1下列代码以只允许写操作的二进制方式打开文件。Open "TESTFILE" For Binary Access Write As #1
    ' 若要以其他方式打开文件,必需先关闭此文件。
    Close #1下列代码以随机方式打开文件,文件中含有用户自定义数据类型 Record 的记录。Type Record   ' 定义用户自定义数据类型。
       ID As Integer
       Name As String * 20
    End TypeDim MyRecord As Record   ' 声明变量。
    Open "TESTFILE" For Random As #1 Len = Len(MyRecord)
    ' 若要以其他方式打开文件,必需先关闭此文件。
    Close #1下列代码以顺序输出方式打开文件;任何过程都可以读写该文件。Open "TESTFILE" For Output Shared As #1
    ' 若要以其他方式打开文件,必需先关闭此文件。
    Close #1下列代码以只允许读的二进制方式打开文件;其他过程不可以读该文件。Open "TESTFILE" For Binary Access Read Lock Read As #1
      

  2.   

    不要见笑。我自学VB才一个月。请多指教!!Dim FilesNum '定义文件总数
    Dim Search, Where '定义要查找的文本内容和位置
    Dim i        '定义循环变量
    Dim Lineoftext, nextline$, alltext
      Search = Text1.Text '从text1里获取要查找的内容
      nextline$ = Chr(13) & Chr(10)
      FilesNum = File1.ListCount'开始逐个打开文件
    For i = 0 To filesNum
      
      Dim Selectfiles$ '存放文件路径
    '下面这一句有问题。目的是逐个获取File1的文件路径
      Selectfiles$ = File1.Path & "\" & File1.FileName
      
      
      Open Selectfiles$ For Input As #1
          
         Do Until EOF(1)
         Line Input #1, Lineoftext
         alltext = alltext + Lineoftext + nextline$
         Loop
         Where = InStr(alltext, Search)
         If Where Then
            List1.list(i)='还没写
            Else: MsgBox "没有找到", , "提示"
         End If有点乱。:)
         Close #1
        Next i
        
      

  3.   

    why is no one using 'fso'?
      

  4.   

    用FSO还要加上一下DLL,不实惠..
      

  5.   

    这是一个简单的查找问题,不过你如果没有深厚的VB功底是很难搞定的。
    前两天没时间今天做了一下:Option Explicit
    Dim i        '定义循环变量
    Dim filepath As String '文件路径。
    Private Sub Form_Load()
    File1.AddItem "test1.txt" '按照你的设定,添加一个listbox命名为file1,添加一个textbox
    File1.AddItem "test2.txt"
    File1.AddItem "test3.txt"
    File1.AddItem "test4.txt"
    File1.AddItem "test5.txt"
    File1.AddItem "test6.txt"
    filepath = App.Path & "\test1.txt" 'app.path是本程序所在的文件夹目录.test1.txt是测试文本文件.
    Dim test1
     test1 = FreeFile '创建一个自由文件变量。
     Open filepath For Input As #test1 ' 打开文件。赋予test1文件变量
    Dim MyChar '读出test1文件变量里的所有字符
    Do While Not EOF(test1)   ' 循环至文件尾。
       MyChar = MyChar & Input(1, #test1)   ' 读入一个字符。
    Loop
    Debug.Print MyChar ' 显示到立即窗口。
    Close #test1   ' 关闭文件。
    Dim mystring() As String '定义数组
    mystring = Split(MyChar, vbCrLf) '用split函数把txt文件的每一行添加到数组,vbcrlf是回车符
    For i = LBound(mystring) To UBound(mystring) '查找所有的行Debug.Print mystring(i) & "___mytest___" ' 显示到立即窗口。Next
    Dim mycheckstring1 As String
    mycheckstring1 = mystring(3) '文件的第四行
    mycheckstring1 = InStr(mycheckstring1, "1234567890") '查找符合条件的位置。1234567890是你的条件
    Debug.Print mycheckstring '在此行中符合条件的起始位置
    End Sub'FreeFile 函数
          '返回一个 Integer,代表下一个可供 Open 语句使用的文件号。'语法'FreeFile [(rangenumber)]'可选的参数 rangenumber 是一个 Variant,它指定一个范围,以便返回该范围之内的下一个可用文件号。指定 0(缺省值)则返回一个介于 1 – 255 之间的文件号。指定 1 则返回一个介于 256 – 511 之间的文件号。'‘说明'使用 FreeFile 提供一个尚未使用的文件号。'App 对象
                'App 对象是通过关键字 App 访问的全局对象。它指定如下信息:应用程序的标题、版本信息、可执行文件和帮助文件的路径及名称以及是否运行前一个应用程序的示例。'语法'App'Split函数
          '描述'返回一个下标从零开始的一维数组,它包含指定数目的子字符串。'语法'Split(expression[, delimiter[, count[, compare]]])'Split函数语法有如下几部分:'部分 描述
    'expression 必需的。包含子字符串和分隔符的字符串表达式 。如果expression是一个长度为零的字符串(""),Split则返回一个空数组,即没有元素和数据的数组。
    'delimiter 可选的。用于标识子字符串边界的字符串字符。如果忽略,则使用空格字符(" ")作为分隔符。如果delimiter是一个长度为零的字符串,则返回的数组仅包含一个元素,即完整的 expression字符串。
    'count 可选的。要返回的子字符串数,–1表示返回所有的子字符串。
    'compare 可选的。数字值,表示判别子字符串时使用的比较方式。关于其值,请参阅“设置值”部分。
    '设置值'compare参数的设置值如下:'常数 值 描述
    'vbUseCompareOption –1 用Option Compare语句中的设置值执行比较。
    'vbBinaryCompare 0 执行二进制比较。
    'vbTextCompare 1 执行文字比较。
    'vbDatabaseCompare 2 仅用于Microsoft Access。基于您的数据库的信息执行比较。
      

  6.   

    呵呵。谢谢各位了。由于要查找的文本文件不大。我自己用了个全文查找办法,也完成了。。我给出代码。请大家看看。4月9号结贴。谢谢!分毫不吝啬!'通用声明部分
    Dim i As Integer             '定义要打开的文件循环变量
    Dim FindFileNum As Integer   '定义找到的文件数量
    Dim FName                    '定义文件名变量
    Dim SearchStr As String      '要检索的文本
    Dim FoundPos As Integer      '匹配文本所在位置
    Private Sub Command1_Click()
    '目录文件如果不存在。
    If (File1.ListCount = 0) Then
    MsgBox "当前目录下没有存盘文件,请重新选择目录!", vbOKOnly + vbInformation, "提示"
    Exit Sub
    End If
    '如果没有输入要查找的字符串
    If Text1.Text = "" Then
    MsgBox "请输入需要查找的内容", vbOKOnly + vbInformation, "提示"
    Exit Sub
    End If'改变鼠标状态
    Me.MousePointer = 11
    '循环打开文件
     FindFileNum = 0
     For i = 0 To ((File1.ListCount) - 1)
         
         FName = File1.Path & "\" & File1.List(i)
         RichTextBox1.LoadFile FName, rtfText
         '对打开的文件进行查找
         SearchStr = Text1.Text
         '查找整词匹配的第一次出现位置
         FoundPos = RichTextBox1.Find(SearchStr)
          '如果找到指定单词(位置不是 -1时)
          If FoundPos <> -1 Then
            FindFileNum = FindFileNum + 1
            '下面把每次找到的文件作为链接放入OLE里。
            '代码正在编写中。:)
             
          End If
      Next i
     If FindFileNum <> 0 Then
     MsgBox "共找到" & FindFileNum & "含有您输入字符的文件!", , "恭喜你!"
     Else
     MsgBox "没找到含有您输入字符的文件!", , "非常遗憾!"
     End If
    Me.MousePointer = 0
      

  7.   

    运行起来不是很慢。我试过查找350个文件用11秒。如果用Open filepath For Input As #1这样的语句就好像死机一样。呵呵。再次谢谢各位!!!