这是我编写的代码,首先打开一个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
答案 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