MyTetra Share
Делитесь знаниями!
ADO в Excel и большой размер файла.
Время создания: 16.03.2019 23:43
Текстовые метки: Excel-Access, vba, ADO, Connection, Recordset
Раздел: Разные закладки - VBA - Access - Access->Excel
Запись: xintrea/mytetra_db_adgaver_new/master/base/1514579126jde0dwnd9q/text.html на raw.githubusercontent.com

Например, работать с 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 секунды.

 
MyTetra Share v.0.65
Яндекс индекс цитирования