2005-4-14 T0 T1 T2 T3 T4 T5 T6 T7 T8 T9 T10
F0101 378 376.2 376.2 374.4 374.4 378 372.6 363.6 363.6 363.6 363.6
F0102 374.4 374.4 374.4 370.8 372.6 376.2 370.8 361.8 361.8 361.8 361.8
T1,T2为时间(一个小时)
F0101为标置名,读中间的数据.请贴出原码高分送!

解决方案 »

  1.   

    首先你要确认的一点是读csv文件其实和文本文件基本上没有区别
    然后就是要确认字符之间是用什么进行分割
    标置前5位是固定的,这就是行
    T0,T1,T2..这就是列,固然可以把列当成参数T0就传递0,T1就传递1....
    然后你就可以循环判断第几行,第几个参数,就可以提取出来了.
    我给你部分代码!
    '*************************************
    '函数:SelectDouHao
    '参数:DouHao 整型,ZiFu 字符串
    '返回值:字符串
    '说明:读取条码
    '*************************************
    Public Function SelectDouHao(DouHao As Integer, ZiFu As String) As String    Dim i             As Integer
        Dim j             As Integer
        Dim x             As Integer
        Dim DouHao2       As Integer
        Dim DouHao3       As Integer
        Dim DouHao4       As Integer
        Dim Dou           As Integer
        
    On Error GoTo Error
        Dou = DouHao
        
        '取第一组
        If Dou = 1 Then
            SelectDouHao = VBA.Trim(VBA.Mid(ZiFu, 1, 13))
            Exit Function
        End If
        
        '取第二组
        If Dou = 2 Then
            For i = 15 To VBA.Len(ZiFu)
                If VBA.Mid(ZiFu, i, 1) = "," Then
                    '得到第二个逗号的位置
                    SelectDouHao = VBA.Trim(VBA.Mid(ZiFu, 15, i - 15))
                    Exit Function
                End If
            Next i
        End If
        
        '取第三组
        If Dou = 3 Then
            For i = 15 To VBA.Len(ZiFu)
                If VBA.Mid(ZiFu, i, 1) = "," Then
                    DouHao2 = i
                    Exit For
                End If
            Next i
            DouHao2 = DouHao2 + 1
            For j = DouHao2 To VBA.Len(ZiFu)
                If VBA.Mid(ZiFu, j, 1) = "," Then
                    SelectDouHao = VBA.Trim(VBA.Mid(ZiFu, DouHao2, j - DouHao2))
                    Exit Function
                End If
            Next j
        End If
        
        '取第四组
        If Dou = 4 Then
            For i = 15 To VBA.Len(ZiFu)
                If VBA.Mid(ZiFu, i, 1) = "," Then
                    DouHao2 = i
                    Exit For
                End If
            Next i
            DouHao2 = DouHao2 + 1
            For j = DouHao2 To VBA.Len(ZiFu)
                If VBA.Mid(ZiFu, j, 1) = "," Then
                    DouHao3 = j
                    Exit For
                End If
            Next j
            DouHao3 = DouHao3 + 1
            For j = DouHao3 To VBA.Len(ZiFu) + 1
                If VBA.Mid(ZiFu, j, 1) = "," Or VBA.Mid(ZiFu, j, 1) = "" Then
                    SelectDouHao = VBA.Trim(VBA.Mid(ZiFu, DouHao3, j - DouHao3))
                    Exit Function
                End If
            Next j
        End If
        
    '    '取第五组
    '    If Dou = 5 Then
    '        For i = 15 To VBA.Len(ZiFu)
    '            If VBA.Mid(ZiFu, i, 1) = "," Then
    '                DouHao2 = i
    '                Exit For
    '            End If
    '        Next i
    '        DouHao2 = DouHao2 + 1
    '        For j = DouHao2 To VBA.Len(ZiFu)
    '            If VBA.Mid(ZiFu, j, 1) = "," Then
    '                DouHao3 = j
    '                Exit For
    '            End If
    '        Next j
    '        DouHao3 = DouHao3 + 1
    '        For j = DouHao3 To VBA.Len(ZiFu)
    '            If VBA.Mid(ZiFu, j, 1) = "," Then
    '                DouHao4 = j
    '                Exit For
    '            End If
    '        Next j
    '        DouHao4 = DouHao4 + 1
    '        For j = DouHao4 To VBA.Len(ZiFu) + 1
    '            If VBA.Mid(ZiFu, j, 1) = "," Or VBA.Mid(ZiFu, j, 1) = "" Then
    '                SelectDouHao = VBA.Mid(ZiFu, DouHao4, j - DouHao4)
    '                Exit Function
    '            End If
    '        Next j
    '    End If
    Exit Sub
    Error:
        MsgBox Err.Description, vbExclamation + vbOKOnly, "信息!"
    End Function
      

  2.   

    其实用不着这么累,直接建立一个filesystemobject,然后用readline读取,用split根据逗号分割成数组就得到每行每列的数据了,10行代码就搞定
      

  3.   

    '打开CSV文件
       Private Sub OpenCSVFile()        Dim CSVPath As String
            Dim DataItem As String
            Dim FNum As Integer
            Dim EOFStat As Boolean, EOLStat As Boolean
            Dim FName As String   
         
            FNum = FreeFile
            FName = CSVPath & CSVFile
            Open FName For Input Lock Write As #FNum
            EOFStat = EOF(FNum)        Do Until EOFStat
                'Read data item from CSV file
                EOFStat = EOF(FNum) 'End of CSV file
                If EOFStat Then Exit Do            
                DataItem = GetCSVItem(FNum, EOLStat)
            Loop   End Sub'得到CSV文件中一个单元格的内容
    Public Function GetCSVItem(Fn As Integer, EOL As Boolean) As Variant    Dim ResultStr As String
        Dim cc As String * 1
        Dim ccbk As String * 1
        Dim ParseStep As Integer
        
        EOL = True
        blnEnter = False
        ResultStr = vbNullString
        ParseStep = 1
        
        Do Until EOF(Fn)
            Select Case ParseStep
                Case 1 'start read data
                    cc = Input$(1, #Fn)
                    If cc = """" Then
                        ParseStep = 2
                        cc = Input$(1, #Fn)
                    Else
                        ParseStep = 11
                    End If            Case 2
                    If cc = """" Then
                        ParseStep = 3
                    Else
                        ResultStr = ResultStr & cc
                    End If
                    cc = Input$(1, #Fn)            Case 3
                    If cc = """" Then
                        ResultStr = ResultStr & cc
                        ParseStep = 2
                        cc = Input$(1, #Fn)
                    Else
                        ParseStep = 11
                    End If
                                    
                Case 11 'reading data
                    If cc = "," Then
                        EOL = False
                        Exit Do
                    Else
                        If cc = Chr$(13) Or cc = Chr$(10) Then
                            blnEnter = True
                            ParseStep = 21
                            ccbk = cc
                        Else
                            ResultStr = ResultStr & cc
                            If cc = """" Then
                                ParseStep = 12
                            End If
                        End If
                        cc = Input$(1, #Fn)
                    End If            Case 12
                    If cc = """" Then
                        cc = Input$(1, #Fn)
                    End If
                    ParseStep = 11            Case 21 'the row data is readed for "Enter" in the end
                    If (cc <> Chr$(13) And cc <> Chr$(10)) Or ccbk = cc Then
                        Seek #Fn, Seek(Fn) - 1
                    End If
                    Exit Do        End Select
        Loop
        GetCSVItem = ResultStr 'Reture result
        
    End Function
      

  4.   

    我发现楼上几位给出的代码都太冗余了.其实可以把CSV文件看着一般的文本文件.能过READLINE,然后能过逗号分开就可以读取自己想要数据了./