【发布时间】:2016-07-11 12:38:44
【问题描述】:
我正在尝试使用 VBA 读取 CSV。关注this tutorial 时,我得到以下代码:
Sub OpenTextFile()
Dim FilePath As String
FilePath = "C:\path\to\file\mycsv.csv"
Open FilePath For Input As #1
row_number = 0
Do Until EOF(1)
Line Input #1, LineFromFile
LineItems = Split(LineFromLine, ",")
ActiveCell.Offset(row_number, 0).Value = LineItems(2)
ActiveCell.Offset(row_number, 1).Value = LineItems(1)
ActiveCell.Offset(row_number, 2).Value = LineItems(0)
row_number = row_number + 1
Loop
Close #1
End Sub
这是我的 CSV:
peter,paris,23
mary,london,34
steve,rome,56
lily,madrid,65
执行代码时出现错误:
索引超出范围
并且这条线被标记为黄色:
ActiveCell.Offset(row_number, 0).Value = LineItems(2)
【问题讨论】:
-
发生此错误时
ActiveCell与什么范围相关? -
@MacroMan:我是 VBA 新手。我已经提供了有关我所拥有的错误的唯一信息。那就是错误信息和错误行。
-
“我是 VBA 新手”还不够好,你不能用谷歌搜索
Range和ActiveCell是什么意思?如果你不努力解决你的问题,那么人们就不会努力回答它。 -
一切似乎都是正确的。然而,有没有可能只有一个逗号的
LineFromLine?你检查过LineFromLine吗?也许添加一个Debug.Print LineFromLine并在split之后添加一个断点以检查LineItems的项目计数:Debug.Print UBound(LineItems) - LBound(LineItems) + 1