如何在當前Excel工作簿上運行MS Query(Ace Oledb),而無需在連接字符串中指定外部數據源?即數據源文件路徑在當前Excel工作簿上運行MS Query
下面是我完整的連接字符串:
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的情況。
請出示的代碼,你要分配該連接字符串變量。通常,它應該像'strConnection =「Provider = Microsoft.ACE.OLEDB.12.0; User ID = Admin; Data Source =」&ThisWorkbook.FullName & "; Mode = ReadWrite; ...「',check [this answer] (http://stackoverflow.com/a/33400291/2165759)。如果您只需要對記錄進行排序或篩選,則[this one](http://stackoverflow.com/a/36189658/2165759)可能會有所幫助。 – omegastripes
該文件需要保存在磁盤上的某個位置,然後才能對其使用SQL查詢,並且需要在連接字符串中傳遞實際的文件路徑。 –
這正是我想通過指定數據源編程方式,是否沒有其他方式,即使用Power Queen或排序方式,這似乎是一個非常明顯的場景,甚至更改Excel工作簿的名稱或位置,宏需要更新數據源 –