我有一个很大的csv文件(大约800MB),我需要通过VBA(我使用Excel 2010)从Excel文件访问来运行一些计算.现在我想避免直接打开文件,Excel需要永久完成.
因此,我决定将其作为ADO-Recordset打开,如 this post 中所述(也在stackoverflow上)
不幸的是,似乎列数限制为255至少这是我调用AdoRecordset.Fields.count方法时获得的数字.
我尝试在stackoverflow中搜索一些已解决的帖子并找到:
> Can’t transfer more than 255 records from a csv file to access
> Column limitation on CSV using Microsoft Jet OLEDB
还没有人回答第一个问题,我想知道是否可能有其他解决方案,而不是第二篇文章中描述的 – 我希望尽可能避免安装其他软件.
我的问题是:
- is there a way to open a csv-File as an ADO-recordset which has more than 255 avaliable fields/columns – I need about 3000 columns and 10000 rows.
- If this is not the case are there any other ways of reading a csv-File without actually opening it (for this takes years if the file is huge)?
csv文件不是强制性的,我实际上可以将数据转换为任何必要的格式.访问不起作用我有3000列和10000行,MS Access无法处理3000列.是否有一种文件类型可以更轻松,更快速地处理? (在使用ExcelVBA打开和阅读方面)
这一定是经常出现的问题我想知道为什么网上找不到解决办法.
解决方法
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
每行读取您的数据将进入field1SplitData(0)到field3000SplitData(2999)(基于零的数组)