我的电子表格正在使用 ADO 从另一个电子表格读取数据。 VBA 代码在 MS Excel 2007 中正常工作。但是,在 MS 2013 中,打开记录集会生成错误:No value given for one or more required parameters.
出错的行如下:
recset.Open sqlCommand, _
conn, adOpenStatic, adLockReadOnly, adCmdText
我仔细检查了我的两个变量。
-
sqlCommand
具有(净化后的)值:SELECT * FROM [Sheet1$] WHERE [F1] IS NOT NULL ORDER BY [F1] ASC
.
-
conn
is the Connection
对象,具有(已清理的)值: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 版本错误。我不知道正确的版本是什么,也不知道如何使代码在两种环境中工作。
编辑并捂脸:
我正在读取的大多数 Excel 文件没有前两个字段的标题。这个确实如此,我不得不更换[F1]
使用正确的字段名称。请关闭。
嗨,我正在寻找一些答案,我想出了这个将数据视为文本 https://www.connectionstrings.com/excel-2013/
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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)