【发布时间】:2017-03-25 03:08:13
【问题描述】:
我在这里遇到了一些麻烦。
我有一个包含 2500 万行的 csv 数据库,其中包含四列:FIELD(从 1 到 5)、DATEHOUR(格式为 yyyyddmmhhmmssxxx、年、日、月、小时、分钟、秒和毫秒)、BOUND(南或北)和类别(从 1 到 10)。
我正在使用以下代码
Public Sub QueryTextFile()
Dim Recordset As ADODB.Recordset
Dim ConnectionString As String
ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & ThisWorkbook.Path & ";" & _
"Extended Properties=Text;"
Const SQL As String = "SELECT * FROM Dados.csv WHERE Categoria=3;"
Set Recordset = New ADODB.Recordset
Call Recordset.Open(SQL, ConnectionString, CursorTypeEnum.adOpenForwardOnly, LockTypeEnum.adLockReadOnly, CommandTypeEnum.adCmdText)
Call Sheet1.Range("A1").CopyFromRecordset(Recordset)
Recordset.Close
Set Recordset = Nothing
End Sub
问题是,例如,我只想获取 2 月(02 月)和 FIELD 3 的寄存器。我该怎么做?
谢谢你们!
【问题讨论】:
-
CopyFromRecordset只会返回前 65536 条记录。ADODB.Recordset.GetRows会将完整的 Recordset 加载到一个数组中,您可以使用该数组来填充工作表。如果您可以提供 CSV 文件的下载链接,我将提供代码帮助。