2017-06-29 46 views
1

有可能在.xlsx文件(即非宏啓用的工作表)中有連接字符串取決於單元格值或命名公式嗎?沒有VBA的動態數據連接字符串


背景:

每個月

我創建了一個新的工作簿和更新外部數據源。通過這種方式,我可以爲每個月的結果提供工作簿,並且可以隨時查看過去一個月的數據。

現在,由於我在同一數據上使用多個數據透視表,我使用了數據連接。連接字符串看起來像這樣,其中數據源是相關的。

Provider=Microsoft.ACE.OLEDB.12.0; 
User ID=Admin; 
Data Source=C:\pathtofile\myworkbook1705.xlsx; 
Mode=Share Deny Write; 
Extended Properties="HDR=NO; 
"; 
Jet OLEDB // etc. etc // 

我經常手動更新數據源路徑,但因爲我要擴大我做給其他多個任務的項目,這本手冊更新程序從一個細胞變得無聊(變化1705中的文件路徑1706值)。

幾個原因使我不至於使該解決方案在VBA:從啓用宏的文件

  • 安全警告。
  • 用戶知道Excel表爲.xlsx,可能不識別.xlm
  • 繼承。我的後繼者,最終需要在表格中編輯某些內容可能不知道VBA。

我都沒有成功四處搜尋。不幸地不回答問題的相關鏈接在下面鏈接。

+0

您是否嘗試過以下方法:https://stackoverflow.com/q/20521056/3560603 – fhossfel

回答

1

長話短說 - NO。這是一個巨大的安全問題。如果你找到了解決辦法,立即通知微軟,他們會很樂意修復它:)。

任何曾經用SQL從單元格中讀取數據的人都可以通過SQL獲得單一美元,這絕對是一種不好的做法。我的意思是,連接字符串可能是您擁有的最敏感的信息。即使使用VBA,也要確保密碼始終由用戶寫入單元格(或通過表單),然後進行擦除。 不是硬編碼在代碼中。

微軟可能被很多人認爲是不好的,但他們永遠不會在他們的產品中留下這樣的安全漏洞。

+1

我甚至沒有*考慮過如果可能會涉及的安全問題。現在你指出了,我完全理解。那麼,至少我很欣賞得到迴應!我會確保做出一個適當的安全VBA解決方案:) – Therkel

+0

@Therkel - 祝你好運。一般來說,如果你在這裏看看我的GitRepo - https://github.com/Vitosh/VBA_personal/blob/45afa5f0bcc9233ac01d1ea86c0f9f321b563824/Connection.vb是保護密碼的一種簡單方法。例如,你可以使用'str_connection_string'函數讀取用戶的輸出並將其他內容作爲密碼傳遞給數據庫,因此用戶不需要知道真實密碼。另外,如果你確定你總是在電子表格中刪除用戶的輸入,他/她將密碼放在哪裏,你會有點安全。 – Vityata