使用VB从csv文件读取数据

时间:2011-02-12 11:22:31

标签: vb6 csv

这是我编写的代码,首先打开一个csv文件作为excel,然后找到所需的三列,然后从中读取数据n将数据保存到另一个显示在文本框中的变量中。至于csv文件,它包含许多列,我的焦点只在标题ID,L,Lg下的3列。

问题是Excel实际上没有打开,但Excel.exe进程在任务管理器中运行。 但到此为止它不是编译错误;编译错误出现在'Next'语句中。它说编译错误:下一个没有For !!!!

我对这个感到困惑。请帮我解决这个问题,先谢谢。

Private Sub cmdFind_Click()

Dim xlApp As Excel.Application
Set xlApp = New Excel.Application

Dim X As Double, Y As Double, FleetID As String
Dim F As String, FCol As Integer, LCol As Integer, LgCol As Integer, Srno As Integer, I As Integer


Dim xlWbook As Workbook
Dim xlSht As Excel.Worksheet
Set xlWbook = xlApp.Workbooks.Open("C:\Users\saurabhvyas\Desktop\test VB2\testfile.csv")
xlApp.Visible = True
Set xlSht = xlWbook.Worksheets("sheet1")


For I = 1 To 8 Step 1
    If xlSht.Cells(I, 1).Value = "ID" Then
        FCol = I
    Else
    If xlSht.Cells(I, 1).Value = "L" Then
        LCol = I
    Else
    If xlSht.Cells(I, 1).Value = "Lg" Then
        LgCol = I
    End If
Next I


Set Srno = 2
Do
    If xlSht.Cells(FCol, Srno).Value = Str$(txtF.Text) Then
        Set X = xlSht.Cells(LCol, Srno).Value
        Set Y = xlSht.Cells(LgCol, Srno).Value
    End If
    Srno = Srno + 1
Loop While xlSht.Cells(FCol, Srno).Value = vbNullString 


txtL.Text = Str$(X)
txtLg.Text = Str$(Y)

xlWbook.Close
xlApp.Quit
Excel.Application.Close
Set xlSht = Nothing
Set xlWbook = Nothing
Set xlApp = Nothing

End Sub

2 个答案:

答案 0 :(得分:1)

您可以打开CSV格式的文本文件,并使用ADO和Jet Provider的文本IISAM对它们进行操作。比自动化Excel要笨重得多。或者您可以将这些行作为文本阅读,并使用逗号分割()。

你正在做什么打开Excel,但你没有要求Excel可见......虽然我不知道你为什么要这样。

你真的想做什么?

答案 1 :(得分:1)

至于你的编译错误,那是因为你错过了一些End Ifs。 把它写成:

For I = 1 To 8 Step 1
    If xlSht.Cells(I, 1).Value = "ID" Then
        FCol = I
    Else
        If xlSht.Cells(I, 1).Value = "L" Then
            LCol = I
        Else
            If xlSht.Cells(I, 1).Value = "Lg" Then
                LgCol = I
            End If
        End If
    End If
Next I

或者作为:

For I = 1 To 8 Step 1
    If xlSht.Cells(I, 1).Value = "ID" Then
        FCol = I
    ElseIf xlSht.Cells(I, 1).Value = "L" Then
        LCol = I
    ElseIf xlSht.Cells(I, 1).Value = "Lg" Then
        LgCol = I
    End If
Next I