我想把这个txt文件读出来,该怎么写呀..2431F11A10T01     2     2     --      0.08    M-CNC-CMM
2431F11A10T022          1     --      0.05     M-CNC-CMM 中间的空格也不一定..该怎么解决呀,请大侠给个思路,或来个例子.谢谢...
 

解决方案 »

  1.   

    Option ExplicitPrivate Sub Command1_Click()
        Dim outStrings As String
        Open App.Path & "\a.txt" For Input Access Read As #1
        outStrings = Input(LOF(1), #1)
        Close #1
        MsgBox "文件中的文字为:" & vbCrLf & outStrings, vbInformation, App.Title
    End Sub
      

  2.   

    在vb下读文本文件有两种简单的办法:一是open语句,另一个是fso文件系统。
      

  3.   

    我是想把这个TXT文件里的数据导入数据库,如果用 left ,mid 等函数,太麻烦了,而且也不一定准.如下图:
    各字段空格的多少也不一定    我该怎么做呀...求高手支招....谢谢...
      

  4.   

    如果是同一个工具导出的TXT文件的格式应该是一样的。
    字符串处理肯定是要用到left、right、mid、trim这些函数的
      

  5.   

    如果按你3楼的图,每一行应为5个数据,但一楼的2431F11A10T01 2 2 -- 0.08 M-CNC-CMM已是6个数据了,2431F11A10T022 1 -- 0.05 M-CNC-CMM  共5个数据,提醒楼主注意。
    Option Explicit
    Private Sub Command1_Click()
    Dim a()
    Dim b
    Dim i As Long, j As Long
    Dim s As String
        Open "C:\123.txt" For Input As #1
        Do While Not EOF(1)
        Line Input #1, s
        b = Split(s, " ")
        For i = 0 To UBound(b)
        If b(i) <> "" Then
        ReDim Preserve a(j)
        a(j) = b(i)
        Debug.Print a(j)
        j = j + 1
        End If
        Next
        Loop
        Close #1
    End Sub
      

  6.   

    Private Sub Form_Load()
        Dim strData$
        Dim reg As Object
        Dim matchs As Object, match As Object
        
        strData = "2431F11A10T01   2  0.08   怴惂  M-CNC-CMM" & vbCrLf & _
                    "2431F11A10T022   1   0.05        怴惂   M-CNC-CMM"
        Set reg = CreateObject("vbscript.regexp")
        reg.Global = True
        reg.IgnoreCase = True
        reg.Pattern = "(.+?)\s+(\d+)\s+(.+?)\s+(.+?)\s+(.+?)(?:\s+?|$)"'每个数据之间的空格或者制表符个数不限
        
        Set matchs = reg.Execute(strData)
        
        For Each match In matchs
            Debug.Print match.SubMatches(0) & "," & match.SubMatches(1) & "," & match.SubMatches(2) & "," & match.SubMatches(3) & "," & match.SubMatches(4)'这里可以修改成写入数据库的代码
        Next
    End Sub
      

  7.   

    回复5# 能否解释下这句:ReDim Preserve a(j)你那样写与我这样写有什么区别呀...
      For i = 0 To UBound(b)
        If b(i) <> "" Then
        debug.print b(i)
        End If
        Next
                        谢谢.....
      

  8.   

    他想把有效数据都放到数组a中的,到一个循环结束,a里面每个元素都是有效数据,Preserve是表示在数组长度重定义的时候保证已经存储的数据部丢失。
    建立楼主试试我上面正则的方法,简洁而不乏效率
      

  9.   

    既然你的“数量”可能是空,那么其他字段都可能是空。
    如果你的间隔是固定的还好办,比如一个制表符,那么直接用split(xx,vbtab)分割处理;
    如果既有空格又有制表符而且个数不定,那么就比较麻烦了。
      

  10.   

    发错了...
        你用的是不是  fso文件系统呀
      

  11.   

    这句全是符号...晕了
    reg.Pattern = "(.+?)\s+(\d+)\s+(.+?)\s+(.+?)\s+(.+?)(?:\s+?|$)"'