Excel 电子表格的 ADO 记录集在 Excel 2007 年正确打开,在 Excel 2013 年缺少参数

ADO Recordset to Excel spreadsheet opens properly in Excel 2007, has a missing parameter in Excel 2013

我的电子表格正在使用 ADO 从另一个电子表格读取数据。 VBA 代码在 MS Excel 2007 中正常工作。但是,在 MS 2013 中,打开记录集会生成错误:No value given for one or more required parameters.

出错的行是:

recset.Open sqlCommand, _
    conn, adOpenStatic, adLockReadOnly, adCmdText

我仔细检查了我的两个变量。

其他三个参数是ADO常量。

我最好的猜测是 Provider 是错误的版本,Excel 或 ADO。我不知道正确的版本是什么,也不知道如何使代码在两种环境下都能工作。

编辑并捂脸: 我正在阅读的大多数 Excel 文件的前两个字段都没有 headers。这一个确实如此,我不得不用正确的字段名称替换 [F1]请关闭。

嗨,我正在寻找一些答案,我想到了这个 Treating data as text

Provider=Microsoft.ACE.OLEDB.12.0;Data Source=c:\myFolder\myExcel2007file.xlsx;  
Extended Properties="Excel 12.0 Xml;HDR=YES;IMEX=1";

当我 运行 在 Excel 中进行一些测试时,它显示:

Provider=Microsoft.ACE.OLEDB.12.0 ...  
    Extended Properties=""HDR=YES;""; ...
Jet OLEDB:Bypass ChoiceField Validation=False;

所以我认为您缺少的参数必须是 Extended Properties

我正在读取的大多数 Excel 文件的前两个字段都没有 headers。这个可以,我必须用正确的字段名称替换 [F1]

(我在 2015 年 7 月 10 日编辑后粘贴的答案。)