在Excel VBA中使用ADO时,记录计数始终为-1

时间:2018-02-16 12:25:53

标签: vba excel-vba excel

我有一个超过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 是传递给此函数的文件名

1 个答案:

答案 0 :(得分:1)

您需要在Open方法中指定CursorType

默认情况下,CursorTypeadOpenForwardOnly,这将导致记录集无法返回记录计数。

尝试adOpenKeysetadOpenStatic