2014-09-12 61 views
0

我有一個帶密碼的訪問數據庫(「1234」),我想連接vba中的excel文件來提取數據。如何將excel與vba的鎖定訪問數據庫連接起來?

如果我取消保護訪問文件,我可以用的東西連接自己這樣

path = ThisWorkbook.Path & "\KCBD.accdb" 
cs = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & path & ";Persist Security Info=False;" 

Set Cn = New ADODB.Connection 
Cn.Open cs 

和它的作品,但是當我保護訪問文件用密碼我不知道該怎麼辦的連接。我已經試過這

Ruta = ThisWorkbook.Path & "\KCBD.accdb" 
cs = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & Ruta & ";Persist Security Info=False;" & "Password=1234;" 

Set Cn = New ADODB.Connection 
Cn.Open cs 

但這個錯誤讓我停止「Cn.Open CS」線:運行時錯誤「-2147217843(80040E4D)」

你能幫助我嗎?非常感謝。

+0

用戶名丟失? – Margus 2014-09-12 12:31:05

+0

沒有用戶名,我已經鎖定數據庫在獨佔模式下打開它並使用密碼進行加密,在Access文件菜單中輸入密碼,沒有別的。 – Monchou2 2014-09-12 12:35:33

回答

0

我發現這個問題的答案:Excel ADODB VBA error msg 'Not a Valid Password'

在Access 2010中的加密方法改變數據庫的密碼,並在ADO提供商的「噴氣機OLEDB:數據庫密碼」的關鍵字沒有出現新的方法來工作。在這裏,我必須刪除密碼,進入Access->文件 - >選項 - >客戶端設置 - >高級,然後選中「使用傳統加密」,然後重新創建密碼。 我不知道是否有任何新的OLE DB連接字符串的關鍵詞爲ACE提供商還是使用ADO.NET

由於bibadia用戶

1

有擔保或密碼保護時也會出現此問題Access數據庫使用Properity「數據庫密碼」 例如:

cs = "provider=Microsoft.ACE.OLEDB.12.0;" & _ 
    "Data Source=" & App.Path & "\myAccessFile.accdb;" & _ 
    "Jet OLEDB:Database Password= 1234" 

這裏「App.Path」是您的應用程序放在你可以把然而ACCESS數據庫,如果有一個L尺寸指定ocation然後在格式 e.g用它代替App.Path:

Ruta = ThisWorkbook.Path & "\KCBD.accdb" 
cs = "provider=Microsoft.ACE.OLEDB.12.0;" & _ 
     "Data Source=" & Ruta & ";" & _ 
     "Jet OLEDB:Database Password= 1234" 

如果西港島線不能正常工作,那麼請嘗試其他Jet提供

cs = "provider=Microsoft.jet.oledb.4.0;" & _ 
相關問題