我正在尝试通过Microsoft ACE OLEDB 12.0与MS Access数据库建立连接。我想使其在Excel 2010和Excel 2013上均可使用,以便最终用户只需刷新连接即可获取新数据。问题在于Excel 2013向连接字符串添加了2个属性,这使该连接不可用于Excel 2010用户。有没有一种方法可以防止Excel 2013添加这些内容,或者使Excel 2010忽略它们?具有连接的文件将位于网络驱动器上,并且将由Excel 2010和2013用户使用。
EXCEL 2010:
Provider=Microsoft.ACE.OLEDB.12.0;
User ID=USER;
Data Source=path1.mdb;Mode=Read;
Extended Properties="";
Jet OLEDB:System database=path2.mdw;
Jet OLEDB:Registry Path="";
Jet OLEDB:Engine Type=5;
Jet OLEDB:Database Locking Mode=1;
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
EXCEL 2013:
Provider=Microsoft.ACE.OLEDB.12.0;
User ID=USER;
Data Source=path1.mdb;Mode=Read;
Extended Properties="";
Jet OLEDB:System database=path2.mdw;
Jet OLEDB:Registry Path="";
Jet OLEDB:Engine Type=5;
Jet OLEDB:Database Locking Mode=1;
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
如您所见,Excel 2013多添加了2行,这使该连接不可用。我已经考虑过在刷新数据之前添加VBA代码以更改连接字符串,但是如果有一种方法不让vba参与,那就太好了。
编辑: 在Excel 2010中使用这些多余的行时,Excel会给出“找不到可安装的ISAM”错误。
答案 0 :(得分:0)
看不到如何不能参与VBA。
如果合适的Excel版本,请有条件地运行两行。使用Application.Version
确定Excel版本。在Excel 2010中返回14.0。我认为Excel 2013是15.0版。
If Application.Version > 14 Then
Jet OLEDB:Limited DB Caching=False;
Jet OLEDB:Bypass ChoiceField Validation=False
End If