受帖子" Superfast way to read large files line-by-line in VBA. Please critique"的启发,我试验了这三种方法。但是"超快"使用Get的方法无法处理大于250MB的文件,因为Space(myFileLen)受VBA中String的最大长度限制。根据我的测试,VBA中字符串的最大长度为263,749,613,大约为251 MB。而另外两种方法实际上运行缓慢。 Currenly我想我只能选择Line Input方法。所以,亲爱的朋友们,您能否建议如何在VBA中处理这么大的文件?谢谢!
答案 0 :(得分:0)
在Access中,我通常将文件作为链接表附加,然后使用SQL将行处理到另一个表中。
你想做什么?你的文件有多大。您是否希望将数据加载到Excel,访问或什么?
如果您使用excel,您可以考虑将文件加载到新的PowerPivot数据模型中,因为它旨在压缩数据并提供超高速聚合,因为它是一个柱状数据库。你可以使用DAX。
ħ
答案 1 :(得分:0)
如果它错了但我想把它扔掉那里,我冒着被投票的风险。
我注意到使用ADO似乎没有太多关于这个,是否被认为是缓慢或不好的做法?
Sub TestRead()
MsgBox ReadTextFile("C:\Testdir\", "TEST.txt", 2)
End Sub
Function ReadTextFile(Path As String, MyFile As String, RowNum As Long)
Dim conn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim adcomm As New ADODB.Command
conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Path & ";Extended Properties='text;HDR=YES;FMT=Delimited'"
rs.Open "Select * From " & MyFile, conn, adOpenStatic, adLockReadOnly, adCmdText
rs.AbsolutePosition = RowNum
If rs.EOF Then
ReadTextFile = "Row " & RowNum & " is higher than the rowcount of the data"
Else
ReadTextFile = rs(0)
End If
End Function
test.txt文件:
My Header
This text file is for testing ADO reading
This is a rather long line of text in comparison to the other lines of text in this text file
Short line
Schema.ini文件:
[TEST.txt]
Format=FixedLength
Col1=Column1 Text Width 999