ADO Recordset to Excel电子表格在Excel 2007中正确打开,在Excel 2013中缺less一个参数

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

出错的行读取:

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

我仔细检查了我的两个variables。

  • sqlCommand具有(消毒)值: SELECT * FROM [Sheet1$] WHERE [F1] IS NOT NULL ORDER BY [F1] ASC
  • connConnection对象,具有(消毒)值: Provider=Microsoft.ACE.OLEDB.12.0;User ID=Admin;Data Source=C:\Users\user\Documents\path\workbook_to_read.xlsx;Mode=Share Deny None;Jet OLEDB:System database="";Jet OLEDB:Registry Path="";Jet OLEDB:Database Password="";Jet OLEDB:Engine Type=37;Jet OLEDB:Database Locking Mode=0;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password="";Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don't Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False;Jet OLEDB:Support Complex Data=False;Jet OLEDB:Bypass UserInfo Validation=False;Jet OLEDB:Limited DB Caching=False;Jet OLEDB:Bypass ChoiceField Validation=False;

其他三个参数是ADO常量。

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

编辑和facepalm:我读的大部分Excel文件没有头两个字段。 这一个是,我必须用正确的字段名称replace[F1]请closures。

嗨,我正在寻找一些答案,我想出了这个处理数据作为文本

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

而当我在Excel运行一些testing它显示了这一点:

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

所以我认为你的缺失参数必须是Extended Properties

我正在阅读的大部分Excel文件没有头两个字段。 这一个是,我必须用正确的字段名称replace[F1]

(2015年7月10日从我的编辑粘贴回答。)