我有一个很大的csv-File(大约800MB),我需要通过VBA(我使用Excel 2010)从Excel文件访问来运行一些计算。现在我想避免直接打开文件,因为Excel需要永久完成。
因此,我决定将其作为ADO-Recordset打开,如 this post 中的desrcibed(也在stackoverflow上)
不幸的是,似乎列数限制为255 至少这是我调用AdoRecordset.Fields.count
方法时获得的数字。
我尝试在stackoverflow中搜索一些已解决的帖子并找到:
还没有人回答第一个问题,我想知道是否可能有其他解决方案,而不是第二篇文章中描述的内容 - 我希望尽可能避免安装其他软件。
我的问题是:
- 有没有办法打开一个csv-File作为ADO记录集,它有超过255个可用字段/列 - 我需要大约3000列和10000行。
- 如果不是这种情况,有没有其他方法可以在不实际打开的情况下读取csv-File(如果文件很大,这需要几年时间)?
醇>
csv文件不是强制性的,我实际上可以将数据转换为任何必要的格式。访问不起作用我有3000列和10000行,MS Access无法处理3000列。是否有一种文件类型可以更轻松,更快速地处理? (在打开和使用ExcelVBA阅读时)
这一定是经常出现的问题我想知道为什么网上找不到解决方案。
答案 0 :(得分:2)
3000似乎很大,但有一个kludge:
Dim FileNum As Integer
Dim DataLine As String
Dim SplitData()
FileNum = FreeFile()
Open "Filename" For Input As #FileNum
While Not EOF(FileNum)
Line Input #Filename, DataLine ' read in data 1 record at a time
SplitData = Split(DataLine, ",")
'Process big array
Wend
您的数据的每一行读取将进入 field1 SplitData(0)
到 field3000 SplitData(2999)
(基于零的数组)