2009110901 54425 4042 11748 0003 0008=
2009110901 54429 4020 11795 0000 0005=
2009110901 54430 4077 11815 0001 0000=
2009110901 54432 4060 11848 0000 0000=
2009110901 54434 4017 11830 0000 0000=
2009110901 54436 4040 11895 0002 0001=
2009110901 54522 3988 11773 0000 0000=
NNNN
我想读取把第二列里为54429和54432的这两行读出来,其它的不要,应该怎么处理啊?
还有,碰到最后NNNN,我想结束程序,应该怎么办?

解决方案 »

  1.   

    格式是固定的么?如果是,则open for output,do until eof(记录名),逐行读取,判断字符串中的第12位至16位的内容是否是54429或54432
      

  2.   

    只读那两个数据,怎么会碰上 NNNN ?
      

  3.   

    用input line读取每行,用split分割每行字符串为数组ss(),
    ss(1)和ss(2)就是你要的,
    用if判断标志"NNNN",是就退出循环
    代码很简单,自己搜吧
      

  4.   

    更正 input line 为line input
      

  5.   

     Open "***.***" For Input As #1 Close #1
      

  6.   


    估计楼主的 NNNN是表示底下还有很多条数据~
      

  7.   

    上代码,能不能懂看楼主的造化。
    Option Explicit
    Private Sub Command1_Click()    Const LINEWIDTH& = 40   '如果是 vbLF 定界的,改成 39
        Const DATAWIDDH& = 5    '数据是5个字符
        Const OFFSET& = 12      '数据从第12个字符开始
        Dim iFN&, strTemp$
        Dim lVarA&, lVarB&
        
        strTemp = Space(DATAWIDDH)
        iFN = FreeFile()
        Open "X:\Temp\Test.txt" For Binary As iFN       '打开文件
        Get iFN, LINEWIDTH * (2 - 1) + OFFSET, strTemp  '读第2行
        lVarA = CLng(strTemp)
        Get iFN, LINEWIDTH * (3 - 1) + OFFSET, strTemp  '读第3行
        lVarB = CLng(strTemp)
        Close iFN
        MsgBox lVarA & vbLf & lVarB, 64End Sub
      

  8.   

    一次性读进 然后用正则表达式匹配:
    ^[^\s]*?\s(?:54429|54432)\s.*?$
      

  9.   

    建意将数据存储在XML文件中,这样比存储在文本文件中要好.
    读取文本文件中数据需要一行一行读取,读取的数据出错可能性大.
      

  10.   

    Private Sub Form_Load()
        Dim strData$
        Dim reg As Object
        Dim matchs As Object, match As Object
        
        strData = "2009110901 54425 4042 11748 0003 0008= " & vbCrLf & _
                    "2009110901 54429 4020 11795 0000 0005= " & vbCrLf & _
                    "2009110901 54430 4077 11815 0001 0000= " & vbCrLf & _
                    "2009110901 54432 4060 11848 0000 0000= " & vbCrLf & _
                    "2009110901 54434 4017 11830 0000 0000= " & vbCrLf & _
                    "2009110901 54436 4040 11895 0002 0001= " & vbCrLf & _
                    "2009110901 54522 3988 11773 0000 0000= "
                    
        Set reg = CreateObject("vbscript.regexp")
        reg.Global = True
        reg.IgnoreCase = True
        reg.MultiLine = True
        reg.Pattern = "^\d+?\s(?:54429|54432)\s.*?$"
        Set matchs = reg.Execute(strData)
        For Each match In matchs
            Debug.Print match.Value
        Next
    End Sub
      

  11.   

    Dim strLine As String, strItem() As StringOpen App.Path & "test.txt" For Input As #1Do Until EOF(1)
        Line Input #1, strLine
        If Left(strLine, 4) = "NNNN" Then Exit Do    strItem = Split(strLine, " ")
        if Ubound(strItem) Then
            If (strItem(1) = 54429) Or (strItem(1) = 54432) Then
                Debug.Print strLine
            End If
        End If
    LoopClose #1    
      

  12.   


    Private Sub Command1_Click()
       Open "c:\temp\111.txt" For Input As #1
       Dim istr As String
       Do
         Line Input #1, istr
         If Split(istr)(1) = 54429 Or Split(istr)(1) = 54432 Then
            Debug.Print istr
         End If
       Loop While Trim(istr) <> "NNNN" Or Not EOF(1)
       MsgBox "OK"  
    End Sub