2016-11-26 7 views
1

Проблема: При попытке связаться с базой данных MS Access с помощью MS Excel возникает следующая ошибка: «Не удалось найти устанавливаемый ISAM».Подключение OLEDB к базе данных Access с паролем: «Не удалось найти устанавливаемый ISAM»

Excel File Extension = .xlsm
Access Extension File = .mdb
MS Office Version = Офис 2013
Операционная система = Windows 7 Home Premium (64 бит)

Устранение неисправностей Попытки Сделано:

  1. Microsoft Страница поддержки: https://support.microsoft.com/en-us/kb/209805
  2. StackOverflow Страница A: Troubleshooting Could not find installable ISAM error
  3. StackOverflow Page 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

Спасибо всем.

Я узнал, что это было: Ведущие равные Войдите в пароль (для защищенной базы данных доступа).

► Ошибка: строка подключения вызывает ошибку «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

Ах. Очень хорошо. Спасибо. –