2016-11-26 157 views
1

問題:嘗試通過MS Excel與MS Access數據庫通信時出現以下錯誤:「找不到可安裝的ISAM」。OLEDB連接到Access數據庫,密碼爲:「找不到可安裝的ISAM」

Excel文件擴展名= .XLSM
訪問的文件擴展名=的.mdb
MS Office版本= 2013處
操作系統= Windows 7家庭高級版(64位)

故障排除嘗試製造:

  1. Microsoft支持頁面:https://support.microsoft.com/en-us/kb/209805
  2. StackOverflow頁面A:Troubleshooting Could not find installable ISAM error
  3. StackOverflow的網頁B:How to resolve "Could not find installable ISAM." error for OLE DB provider "Microsoft.ACE.OLEDB.12.0"
  4. 的StackOverflow頁C:Could not find installable ISAM when importing Access table to Excel

下面是VBA代碼:

Dim cnn as New ADODB.Connection 
    cnn.Provider = "Microsoft.ACE.OLEDB.12.0;" 
    cnn.ConnectionString = "Data Source=" & Range("fld") & "\MyDB.mdb:Jet OLEDB: Database Password=" & "Range("pwdDB") 
    '≈Do stuff 
    cnn.close 
    set cnn = nothing 

有誰知道如何解決這個問題?

+0

將有助於顯示您的實際代碼。 –

回答

2

謝謝大家。

我發現它是什麼:Leading Equals登錄密碼(對於受保護的Access數據庫)。

►問題:如果數據庫密碼以等號(「=」)開頭,則連接字符串將引發「Installable ISAM」錯誤。
►解決方案:刪除密碼中的前導等號。

該錯誤消息真的沒有詳細說明,或暗示密碼是問題。

我當然希望這可以幫助別人在未來。

1

除了另一個答案,如果我們用雙引號括起密碼,事實上我們可以處理以等號開頭的密碼。例如,如果密碼是=test,我們使用

Jet OLEDB:Database Password="=test" 

,如果密碼包含雙引號,然後我們需要把它們加倍(像往常一樣的雙引號字符串字面內部雙引號),所以對於密碼="test我們需要使用

Jet OLEDB:Database Password="=""test" 
對於一般情況

VBA代碼,假定該密碼是在一個名爲pwd一個字符串變量:

Dim connStr As String 
connStr = "Data Source=C:\__tmp\pwdTest.accdb;" 
If Len(pwd) > 0 Then 
    connStr = connStr & "Jet OLEDB:Database Password=""" & Replace(pwd, """", """""") & """;" 
End If 
Dim cnn As New ADODB.Connection 
cnn.Provider = "Microsoft.ACE.OLEDB.12.0" 
cnn.Open connStr 
Debug.Print "Connected using '" & connStr & "'" 
+0

啊。非常好。謝謝。 –

相關問題