我有一个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
答案 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
现在可行了