在当前的Excel工作簿上运行MS查询

时间:2017-05-09 21:37:47

标签: excel vba oledb

如何在当前Excel工作簿上运行MS Query(Ace Oledb)而无需在连接字符串中指定外部数据源?即数据源文件路径

以下是我的完整连接字符串:

Provider=Microsoft.ACE.OLEDB.12.0;User ID=Admin;Data 
Source=C:\myfile.xlsm;Mode=ReadWrite;Extended Properties="Excel 12.0 
Xml;HDR=YES";Jet OLEDB:System database="";Jet OLEDB:Registry Path="";
Jet OLEDB:Engine Type=35;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

我想删除此引用Data Source=C:\myfile.xlsm ,使连接字符串假定它应始终引用当前的Excel文件

我想要的是能够在我的Excel文件中设置MS Query,可以通过电子邮件与其他用户共享。目前我需要以编程方式(VBA)替换连接字符串中的数据源,这不是一个优雅的解决方案。我想避免任何使用vba的需要。

1 个答案:

答案 0 :(得分:-1)

嗯,您可以将Data Source=C:\myfile.xlsm放入单元格引用中并将其作为参数传递吗?

STRING“& Worksheet(”Sheet1“)。范围(”A1“)。价值&”STRING