2016-11-10 84 views
0

我有幾個Excel報告通過ODBC查詢Oracle數據庫,我與其他用戶共享。每個用戶都有自己的用戶ID和密碼,這些用戶ID和密碼保存在他們的HKEY_LOCAL_MACHINE/SOFTWARE/ODBC/ODBC.INI文件中,以便更容易地連接到這些數據庫。強制Excel在ODBC數據連接上的連接字符串中排除UID?

每次向Excel中添加查詢時,Excel都會自動創建一個連接字符串,每次需要在Excel中刷新數據時都可以執行該連接字符串。 連接字符串的形式爲:

DSN = DATABASE; UID = USERNAME; DBQ = DBASE; DBA = W; APA = T; EXC = F; FEN = T; QTO = T; FRC = 10 ; FDL = 10; LOB = T; RST = T; BTD = F; BNF = F; BAM = IfAllSuccessful; NUM = NLS; DPM = F; MTS = T; MDI = F; CSR = F; FWC = F; FBS = 64000; TLO = O,MLD = 0; ODA = F;」

我希望Excel排除,它建立這樣,它會從註冊表中拉用戶名代替這些連接字符串UID=USERNAME參數。它目前對密碼值做這個,但不是用戶名。

如果我手動刪除UID參數,Excel會自動再次每次查詢刷新填充它,並與以往用戶填寫它在去年刷新查詢:

Connection String Dialog

我試着填寫用戶名爲UID=/,這似乎告訴Excel從註冊表中提取用戶名,就像我第一次運行它時那樣;但隨後,Oracle ODBC驅動程序連接登錄彈出以爲用戶名實際上/是:

Oracle Connect Dialog

如此看來Oracle或沒有一致認可此參數。

基本上我試圖找出是否有某種通配符或其他這樣的參數,我可以用它來填充UID字段,以便Excel和Oracle ODBC驅動程序連接對話框知道去和拉註冊表的用戶名;或者如果有一種方法可以防止每次連接刷新時Excel將UID參數添加到連接字符串中。

如果不是,我想我的解決方案可能是建立一個Excel加載項,當Excel嘗試將其添加到連接字符串時,它會自動刪除UID字段。

+0

輸入密碼時記錄一個宏。然後,你應該獲得VBA代碼來動態創建它 –

回答

0

我想出的解決方案是將連接字符串拆分成一個數組,清除以「UID =」開頭的元素,並將連接字符串重新放在一起。