OLEDB连接到Access数据库,密码为:“找不到可安装的ISAM”

问题:尝试通过MS Excel与MS Access数据库进行通信时出现以下错误:“找不到可安装的ISAM”。

Excel文件扩展名= .xlsm
访问文件扩展名= .mdb
MS Office版本= Office 2013
操作系统= Windows 7家庭高级版(64位)

故障排除尝试:

  1. Microsoft支持页面: https : //support.microsoft.com/en-us/kb/209805
  2. StackOverflow页面A: 疑难解答无法find可安装的ISAM错误
  3. StackOverflow页面B: 如何解决“无法find可安装的ISAM”。 OLE DB提供程序错误“Microsoft.ACE.OLEDB.12.0”
  4. StackOverflow页面C: 导入Access表格到Excel时找不到可安装的ISAM

这里是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 

有人知道如何解决这个问题吗?

感谢大家。

我发现它是什么:领导等于login密码(对于受保护的访问数据库)。

►问题:如果数据库密码以等号(“=”)开头,则连接string将引发“可安装的ISAM”错误。
►解决scheme:删除密码中的前导等号。

错误信息确实没有详细说明,或暗示密码是问题。

我当然希望这可以帮助别人在未来。

除了另一个答案之外,如果我们用双引号括起密码,事实上我们可以处理以等号开头的密码。 例如,如果密码是=test ,我们使用

 Jet OLEDB:Database Password="=test" 

如果密码包含双引号,那么我们需要将它们加倍(像双引号string文字中的双引号一样),所以对于password ="test我们需要使用

 Jet OLEDB:Database Password="=""test" 

一般情况下的VBA代码,假设密码是在一个名为pwd的Stringvariables中:

 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 & "'"