Private Sub Command01_Click()
Dim a
Dim b
Dim z()
Dim c, str As String
Dim dd As String
Dim rst As ADODB.Recordset
Set rst = New ADODB.Recordset
    rst.Open "select * from FBC", con, adOpenKeyset, adLockOptimistic
dd = Dir("D:\LIS\*.txt")
Do Until dd = "" '开始打开文件夹下第一个文件
Open "D:\LIS\" & dd For Input As #1
ReDim z(6, 4)   
    Do While Not EOF(1)
    Line Input #1, c
    List1.AddItem c
    str = str & c
    Loop
    b = Split(str, vbCrLf) '取每一行的数据,共五行,所以一维数组b有五个元素,最大下标为4
    For i = 0 To UBound(b)
    a = Split(b(i), " ") '对于每一个b的元素,取b中数据到a数组中
    For j = 0 To UBound(a)
    z(i, j) = a(j)
    Debug.Print z(i, j)
    Next j
    Next i
    Close 'z(i,j)就是所得的二维数组
  rst.AddNew
  rst.Fields("ID") = dd: rst.Fields("A") = z(0, 4): rst.Fields("B") = z(1, 4): rst.Fields("C") = z(2, 4): rst.Fields("D") = z(6, 4)
  rst.Update Close #1
 dd = Dir '再次调用dir函数,此时可以不带参数
 Loop '开始打开文件夹下下一个文件
End Sub
-----------------------------------------
目的:提取多个TXT文件,中有7行5列的内容。
以TXT的名字为ID字段(索引),其余相应字段为数组,存入数据库。1:Debug.Print z(i, j)显示的数组假设打开三个TXT文件的话 显示会出现 TX11,TXT1+TXT2,TXT1+TXT2+TXT3这样的内容。而不是我想要的分别显示TXT1,TXT2,TXT3的内容。
2:可是传输的时候只能传输TXT文件名,数组传不过去 rst.Fields("ID") = dd: rst.Fields("A") = z(0, 4): rst.Fields("B") = z(1, 4): rst.Fields("C") = z(2, 4): rst.Fields("D") = z(6, 4)。可运行无报错。

解决方案 »

  1.   

    Dim z()
    里面包括 字符型的 也有数值型的
    我只想用每行最后一段数值型的
    我先把数据库中定义为single 而z()空缺 -----不行
      再把数据库中定义为字符型 而z()空缺 -----不行
      再把数据库中定义为single z()single -----不行
     
      

  2.   

    Private Sub Command1_Click()
        Dim a
        Dim b
        Dim z()
        Dim c, str As String
        Dim dd As String
    '    Dim rst As ADODB.Recordset
        
    '    Set rst = New ADODB.Recordset
    '    rst.Open "select * from FBC", con, adOpenKeyset, adLockOptimistic
        dd = Dir("E:\收集\循环读入文件\LIS\*.txt")
        
        Do Until dd = "" '开始打开文件夹下第一个文件
            Open "E:\收集\循环读入文件\LIS\" & dd For Input As #1
            ReDim z(6, 4)
            i = 0
            str = ""
            
            Do While Not EOF(1)
                Line Input #1, c
                
                If Trim(c) <> "" Then
                    List1.AddItem c
                    str = str & IIf(i > 0, vbCrLf, "") & c
                End If
                
                i = i + 1
            Loop
            
            b = Split(str, vbCrLf) '取每一行的数据,共五行,所以一维数组b有五个元素,最大下标为4
            
            For i = 0 To UBound(b)
                a = Split(b(i), ",") '对于每一个b的元素,取b中数据到a数组中
                
                For j = 0 To UBound(a)
                    z(i, j) = a(j)
                    Debug.Print z(i, j)
                Next j
            Next i
            
            Close 'z(i,j)就是所得的二维数组
            
    '        rst.AddNew
    '        rst.Fields("ID") = dd: rst.Fields("A") = z(0, 4): rst.Fields("B") = z(1, 4): rst.Fields("C") = z(2, 4): rst.Fields("D") = z(6, 4)
    '        rst.Update
            
            Close #1
            dd = Dir '再次调用dir函数,此时可以不带参数
        Loop '开始打开文件夹下下一个文件
    End Sub
    结果
    XE_2100_1
    001
    A1
    20100604074600
    4.51
    XE_2100_1
    001
    B1
    20100604074600
    120
    XE_2100_1
    001
    C1
    20100604074600
    0.45
    XE_2100_1
    001
    D1
    20100604074600
    86
    XE_2100_1
    001
    E1
    20100604074600
    4.51
    XE_2100_1
    001
    F1
    20100604074600
    4.51
    XE_2100_1
    001
    G1
    20100604074600
    215
    XE_2100_1
    001
    A1
    20100604074600
    4.51
    XE_2100_1
    001
    B1
    20100604074600
    120
    XE_2100_1
    001
    C1
    20100604074600
    0.45
    XE_2100_1
    001
    D1
    20100604074600
    86
    XE_2100_1
    001
    E1
    20100604074600
    4.51
    XE_2100_1
    001
    F1
    20100604074600
    4.51
    XE_2100_1
    001
    G1
    20100604074600
    215
      

  3.   

    str = str & c
    ————————
    str = str & IIf(i > 0, vbCrLf, "") & c
    *************************
    按你的做法,split时找不到vbcrlf了
      

  4.   

    a = Split(b(i), " ") 
    ————————
    a = Split(b(i), ",") 
    ****************
    你给的数据是用“,”分割的,我改了