Excel VBA-ADO记录集将第2行作为标题行而不是第1行返回
我正在使用以下代码打开与Excel 2003(.xls)工作表的连接:Excel VBA-ADO记录集将第2行作为标题行而不是第1行返回,excel,ado,recordset,vba,Excel,Ado,Recordset,Vba,我正在使用以下代码打开与Excel 2003(.xls)工作表的连接: Set adoConn = New ADODB.Connection Set adoRS = New ADODB.Recordset With adoConn .ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & vendorSource & ";Extended Properties=""Excel 8.0;HDR
Set adoConn = New ADODB.Connection
Set adoRS = New ADODB.Recordset
With adoConn
.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & vendorSource & ";Extended Properties=""Excel 8.0;HDR=Yes;IMEX=1"";"
.Open
End With
adoRS.CursorLocation = adUseClient
adoRS.CursorType = adOpenStatic
adoRS.ActiveConnection = adoConn
adoRS.Open "SELECT * FROM [6000_600_VENDOR_MAIN_INFO]"
直到最近,这才从工作表中正确返回结果。在我连接到的当前电子表格中,记录集返回第2行作为标题行,而不是第1行。我不确定电子表格中发生了什么变化。从视觉上看电子表格,除了标题行的单元格格式之外,似乎没有什么不同。我试图清除第1行的格式,但没有任何区别。是什么导致记录集将第2行返回为标题行而不是第1行
另外需要注意的是,我正在从Excel2007进行连接,但连接到一个Excel2003格式的电子表格
TIA寻求任何建议。答案在连接字符串中: HDR=是; 该子句指示数据库驱动程序以列名或字段名列表的形式读取文件的第一行 将其重新编码为: HDR=否; 此处还有其他文档:
ConnectionString.com上的文本驱动程序页面有一些关于IMEX=0和其他OLEDB伪经的有趣提示。查询是返回两行还是仅返回第2行?工作表上有1202行。第1行为列标题;第2行开始数据。据我所知,记录集忽略了第1行,并返回第2行作为标题行(记录集字段名),然后返回从第3行开始的所有数据。它应该返回第1行作为标题行,第2行作为数据的开始。至于您的问题,如果您询问查询是否同时返回第1行和第2行作为标题行,我怎么知道?引用标题名(来自工作表第1行)作为字段名会导致一个错误,表示找不到该字段。
[6000\u 600\u VENDOR\u MAIN\u INFO]
是命名范围还是工作表的名称?如果它是一个命名的范围,它还包括标题吗?对于其他阅读本文的人来说,解决这个问题很简单。我想要整个工作表,所以为了绕过与工作表名称相同的命名范围,我将此更改为:adoRS.Open“SELECT*从[6000\u 600\u VENDOR\u MAIN\u INFO]”
改为:adoRS.Open“SELECT*从[6000\u VENDOR\u MAIN\u INFO$”
注意工作表名称后面的$。刚才看到了“5条更多注释”和您关于与源工作表同名的命名范围的注释。我的建议会奏效的。。。非常