OLEDB 使用密码连接到 Access 数据库:"Could not find installable ISAM"
OLEDB connection to Access database with password: "Could not find installable ISAM"
问题:尝试通过 MS Excel 与 MS Access 数据库通信时出现以下错误:"Could not find installable ISAM"。
Excel 文件扩展名 = .xlsm
访问文件扩展名 = .mdb
MS Office 版本 = Office 2013
操作系统 = Windows 7 家庭高级版(64 位)
进行的故障排除尝试:
- Microsoft 支持页面:https://support.microsoft.com/en-us/kb/209805
- Whosebug 页面 A:Troubleshooting Could not find installable ISAM error
- Whosebug 页面 B:How to resolve "Could not find installable ISAM." error for OLE DB provider "Microsoft.ACE.OLEDB.12.0"
- Whosebug 页面 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
有人知道怎么解决吗?
谢谢大家。
我发现它是什么:密码中的前导等于号(对于受保护的 Access 数据库)。
► 问题:如果数据库密码以等号 ("=") 开头,连接字符串将引发 "Installable ISAM" 错误。
► 解决方案:删除密码中的前导等号。
错误消息确实没有详细说明,也没有暗示密码有问题。
我当然希望这对以后的其他人有所帮助。
除了另一个答案,如果我们用双引号将密码括起来,我们实际上可以处理以等号开头的密码。例如密码是=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 & "'"
问题:尝试通过 MS Excel 与 MS Access 数据库通信时出现以下错误:"Could not find installable ISAM"。
Excel 文件扩展名 = .xlsm
访问文件扩展名 = .mdb
MS Office 版本 = Office 2013
操作系统 = Windows 7 家庭高级版(64 位)
进行的故障排除尝试:
- Microsoft 支持页面:https://support.microsoft.com/en-us/kb/209805
- Whosebug 页面 A:Troubleshooting Could not find installable ISAM error
- Whosebug 页面 B:How to resolve "Could not find installable ISAM." error for OLE DB provider "Microsoft.ACE.OLEDB.12.0"
- Whosebug 页面 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
有人知道怎么解决吗?
谢谢大家。
我发现它是什么:密码中的前导等于号(对于受保护的 Access 数据库)。
► 问题:如果数据库密码以等号 ("=") 开头,连接字符串将引发 "Installable ISAM" 错误。
► 解决方案:删除密码中的前导等号。
错误消息确实没有详细说明,也没有暗示密码有问题。
我当然希望这对以后的其他人有所帮助。
除了另一个答案,如果我们用双引号将密码括起来,我们实际上可以处理以等号开头的密码。例如密码是=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 & "'"