我有一个相当大的源 Excel 文件,其中第一列
Code
有大量数字数据,其中少数单元格带有文本。
我的问题是连接中的
IMEX=1
设置无法按预期工作,而且我仍然发现存储在 rst
中时所有少数文本单元格都无效,因为主要数据类型是数字。
那么,无论主导数字数据类型如何,我在这里缺少什么才能使
Code
列中的所有记录在存储在 rst
中时被视为文本?
附注前 13 条记录包含纯数字数据,因此这可能是 @Rory 指出的问题。
Sub RetrieveDataUsingADO()
Dim strFile As String
Dim strConnect As String
Dim strSQL As String
Dim cnn As New ADODB.Connection
Dim rst As New ADODB.Recordset
strFile = ThisWorkbook.Path & "/Data.xlsx"
strConnect = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=""" & strFile & _
""";Extended Properties=""Excel 12.0 Xml;HDR=YES;IMEX=1"";"
cnn.Open ConnectionString:=strConnect
strSQL = "SELECT [Code] FROM [Payments$]"
rst.Open strSQL, cnn, adOpenKeyset, adLockReadOnly
Do Until rst.EOF
Debug.Print CStr(rst.Fields("Code").Value)
rst.MoveNext
Loop
rst.Close
cnn.Close
End Sub
按照此处的说明操作使用 Excel 驱动程序的 TypeGuessRows 设置,并将
TypeGuessRows
的值编辑为某个大数字解决了该问题。