通过ADO连接打开csv-File - 列限制为255 /或只使用其他文件类型?

时间:2012-06-25 07:35:22

标签: database excel csv excel-vba ado vba

我有一个很大的csv-File(大约800MB),我需要通过VBA(我使用Excel 2010)从Excel文件访问来运行一些计算。现在我想避免直接打开文件,因为Excel需要永久完成。

因此,我决定将其作为ADO-Recordset打开,如 this post 中的desrcibed(也在stackoverflow上) 不幸的是,似乎列数限制为255 至少这是我调用AdoRecordset.Fields.count方法时获得的数字。

我尝试在stackoverflow中搜索一些已解决的帖子并找到:

  1. Can't transfer more than 255 records from a csv file to access
  2. Column limitation on CSV using Microsoft Jet OLEDB
  3. 还没有人回答第一个问题,我想知道是否可能有其他解决方案,而不是第二篇文章中描述的内容 - 我希望尽可能避免安装其他软件。

    我的问题是:

      
        
    1. 有没有办法打开一个csv-File作为ADO记录集,它有超过255个可用字段/列 - 我需要大约3000列和10000行。
    2.   
    3. 如果不是这种情况,有没有其他方法可以在不实际打开的情况下读取csv-File(如果文件很大,这需要几年时间)?
    4.   

    csv文件不是强制性的,我实际上可以将数据转换为任何必要的格式。访问不起作用我有3000列和10000行,MS Access无法处理3000列。是否有一种文件类型可以更轻松,更快速地处理? (在打开和使用ExcelVBA阅读时)

    这一定是经常出现的问题我想知道为什么网上找不到解决方案。

1 个答案:

答案 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)(基于零的数组)