2015-04-05 52 views
0

我的VBA(Excel)中没有密码的MDB连接没有工作正常,但我决定在我的MDB文件中设置密码,然后我写了密码连接代码,但它不工作!我得到一个消息:设置密码后无法从VBA连接到MDB

“无法启动appliaction,工作组信息文件丢失或者被其他用户以独占方式打开”

我试图找到一个解决谷歌搜索,但没有为我工作。是否有人知道如何解决它

下面是代码:

Public Function OpenMDB(ByRef MDBname As String) As Variant 

Dim DBConnection As ADODB.Connection 

On Error Resume Next 
Set DBConnection = New ADODB.Connection 

With DBConnection 
    .Provider = "Microsoft.ACE.OLEDB.12.0" 
    .Mode = adModeShareDenyNone 
    .Open MDBname, UserId:="Administrador", Password:="ABC123", Options:=adAsyncConnect 
End With 

If Err.Number <> 0 Then 
    Set OpenMDB = Nothing 
    MsgBox "Error on DB", "Error to connect" 
    End 
Else 
    Set OpenMDB = DBConnection 
End If 

End Function 

只是为了澄清,该MDBname具有MDB的路径(这是正确的) 用户名:=“Administrador” - Administrador是管理员(葡萄牙语)

请!我需要解决它! :S

+0

确保您没有打开它。打开一个数据库并打开它的查询是一个倒装硬币。 – user3819867 2015-04-05 19:23:18

+1

它没有打开:/我也重新启动了我的电脑,以确保 – Braulio 2015-04-05 19:24:06

回答

1

而不是With方法,请尝试使用连接字符串。见three possible methods

strConn = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source Name=" & MDBNAME & ";" & _ 
      "Jet OLEDB:Database Password=ABC123" 
DB.Connection.Open strConn 

其他一些建议:

在旧的MDB数据库,安全水平是一项功能,特定于用户的工作组。请确保在整个文件级别设置数据库密码,而不是用户组级别,可能是Administrador用户。

检查机器上的32位/ 64位级别OLE/ODBC drivers。最后,考虑将Provider改为早期的Jet.OLEDB版本。看到这个SO post

+0

感谢Parfait,但是当我更改为Microsoft.Jet.OLEDB.4.9我现在得到:“提供程序无法找到,它可能没有正确安装”。你认为这是我失踪的参考吗? – Braulio 2015-04-06 00:47:43

+0

没有4.9版本,但4.0。如果这是评论错字,请尝试'Microsoft.ACE.OLEDB.12.0'。 – Parfait 2015-04-06 00:57:11

+0

对不起,这是一个错字,但在论坛上,代码是正确的。我更改为Microsoft.ACE.OLEDB.12.0,现在它正在工作!非常感谢Parfait! – Braulio 2015-04-06 02:26:18