Например, работать с csv очень просто:
Private Sub CSV_Parser()
Dim CN As ADODB.Connection, rs As ADODB.Recordset
Dim strcon As String, strsql As String
Dim dbfilePath As String, dbfile As String, x
Dim c(), d(), e(), n&, i&
Set CN = New ADODB.Connection
dbfilePath = "C:\;"
dbfile = "parsed.csv"
strcon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & dbfilePath & "Extended Properties=""text;HDR=No;FMT=Delimited"";"
CN.Open strcon
strsql = "SELECT TOP 1 * FROM " & dbfile ' здесь в начале находится число строк csv-файла, чтобы не перебирать построчно
Set rs = New ADODB.Recordset
rs.CursorType = adOpenForwardOnly
rs.LockType = adLockReadOnly
rs.PageSize = 10000
rs.Open strsql, CN
i = 1
n = rs.Fields(0).Value
ReDim c(1 To n, 1 To 1): ReDim d(1 To n, 1 To 1): ReDim e(1 To n, 1 To 1)
rs.Close
strsql = "SELECT * FROM " & dbfile & " WHERE F3 IS NOT NULL Order by Val(F3)"
rs.Open strsql, CN
i = 1
For i = 1 To n
c(i, 1) = rs.Fields(2).Value
d(i, 1) = rs.Fields(3).Value
e(i, 1) = rs.Fields(4).Value
rs.MoveNext
Next
rs.Close
Set rs = Nothing
Set CN = Nothing
End Sub
Дальше с массивами работается невероятно просто. 3 млн. строк импортируются за 3 секунды.