VBA脚本始终返回输入超过文件结束错误

时间:2015-04-15 20:55:54

标签: string vba csv word-vba

我有一个csv文件:

hello,world,this
is,an,example,
of,the,csv,file

第一列永远是唯一的。

我让用户输入一个与第一列中的项匹配的字符串,脚本返回整行:

Open "C:\file1.csv" For Input As #file_number
Do While (EOF(1) Or found = False)
    Line Input #file_number, raw_line
    pos = InStr(raw_line, fireName)
    If pos = Not 0 Then
        strData() = Split(raw_line, ",")
        found = True
    End If
Loop
Close #file_number
If found = False Then
    MsgBox "Could not find it"
    Exit Sub
End If
'REST OF THE CODE

但它始终发送消息"找不到它"并退出。 默认情况下,found是一个布尔值,为false。

我知道它可以检测到文件,因为当我更改读取文件名时,它创建了一个新文件(因为它不存在)。

编辑: 我将And更改为Or,现在我收到了错误消息: Run-time error 62: input past end of file

2 个答案:

答案 0 :(得分:2)

Do While循环中看起来像一个简单的错误。你检查EOF而不是EOF,因为它从BOF开始就不会执行。

这样的事情应该有效(我的语法可能略有偏差,因为我暂时没有使用过VBA)

Open "C:\file1.csv" For Input As #file_number
While Not EOF(file_number) And found <> False
    Line Input #file_number, raw_line
    pos = InStr(raw_line, fireName)
    If pos <> 0 Then
        strData() = Split(raw_line, ",")
        found = True
    End If
Wend
Close #file_number
If found = False Then
    MsgBox "Could not find it"
    Exit Sub
End If

答案 1 :(得分:0)

在VBA中输入If pos != 0的正确方法是

If pos <> 0

现在可行了