我有一个超过100行的Excel工作表。所以我尝试按如下方式阅读使用ADO的内容。
Dim db As ADODB.Connection
Dim rs As ADODB.Recordset
Set db = New ADODB.Connection
Set rs = New ADODB.Recordset
Set db = New Connection
Dim extProperties As String
Dim ConnectStr As String, sql As String
extProperties = "Excel 8.0;HDR=Yes;ReadOnly=False;"
ConnectStr = printf("Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Mode=Share Deny None;Extended Properties=""{1}""", fn, extProperties)
db.Open ConnectStr
sql = "SELECT * FROM [Resource_Data$A1:A20]"
Set rs = New Recordset
rs.Open sql, db
MsgBox rs.RecordCount
但记录总数始终为-1
Resource_Data是我工作簿中的工作表。 fn 是传递给此函数的文件名
答案 0 :(得分:1)
您需要在Open方法中指定CursorType
。
默认情况下,CursorType
为adOpenForwardOnly
,这将导致记录集无法返回记录计数。
尝试adOpenKeyset
或adOpenStatic
。