Чтение данных из CSV-файла с использованием VB - PullRequest
1 голос
/ 12 февраля 2011

Это код, который я написал для того, чтобы сначала открыть CSV-файл как Excel, затем найти необходимые три столбца, n затем прочитать данные из них n сохранить данные в другую переменную, отображающую их в текстовом поле. Что касается CSV-файла, он содержит много столбцов, из которых я сосредоточен только на 3 столбцах под заголовком ID, L, Lg.

Проблема в том, что 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 ]

1 голос
/ 12 февраля 2011

Что касается вашей ошибки компиляции, то это потому, что вам не хватает некоторых End If. Запишите это как:

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
1 голос
/ 12 февраля 2011

Вы можете открывать текстовые файлы в формате CSV и работать с ними, используя ADO с текстом IISAM провайдера Jet.Гораздо менее неуклюже, чем автоматизировать Excel.Или вы можете читать строки как текст и разделять их запятыми.

То, что вы делаете, открывает Excel, но вы не просили, чтобы Excel был видимым ... хотя я понятия не имею, почемуВы бы этого хотели.

Что вы действительно пытаетесь сделать?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...