2016-11-26 119 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

啊。非常好。谢谢。 –