是否可以使用VBA更改当前的accdb / e数据库密码

时间:2012-02-23 06:32:40

标签: ms-access ms-access-2007 connection-string

我有一个个人数据库应用程序,最初使用Access 2007中的mdb格式设计。出于安全考虑,我已将其转换为.accdb。除更改DB密码功能外,所有功能转换均正常。此功能在VBA中完成,因为Db已关闭所有工具栏。在mdb格式...这工作正常

DBPath = [CurrentProject].[FullName]

' Create connection string by using current password.
strOpenPwd = ";pwd=" & OldPswd

' Open database for exclusive access by using current password. To get
' exclusive access, you must set the Options argument to True.
Set dbsDB = OpenDatabase(Name:=DBPath, _
                         Options:=True, _
                         ReadOnly:=False, _
                         Connect:=strOpenPwd)

' Set or change password.
With dbsDB
    .NewPassword OldPswd, Pswd2
    .Close
End With

Me.DB_Pswd = Pswd2

Set dbsDB = Nothing

我从这个非常适合.accdb的论坛找到了一些东西,但它只适用于另一个.accdb文件而不是当前的项目....

strAlterPassword = "ALTER DATABASE PASSWORD [" & NwPswd& "] [" & OldPswd & "];"

Set ADO_Cnnct = New adodb.Connection
With ADO_Cnnct
    .Mode = adModeShareExclusive

    .Provider = "Microsoft.ACE.OLEDB.12.0"
    '  Use old password to establish connection
    .Properties("Jet OLEDB:Database Password") = OldPswd

    'name  current DB

    DBPath = [CurrentProject].[FullName]  <- this does not work: get a file already in use error

    .Open "Data Source= " & DBPath & ";"
    ' Execute the SQL statement to change the password.
    .Execute (strAlterPassword)
End With

'Clean up objects.
ADO_Cnnct.Close
Set ADO_Cnnct = Nothing

那么有没有办法在VBA中为.accdb文件执行此操作?基本上它会自动化第一个Decrypt的工具栏功能和使用新密码加密。我知道工具栏可以这样做我知道必须有一个VBA方法来做到这一点。

1 个答案:

答案 0 :(得分:0)

我找到了解决这个问题的方法,或者只是一个解决方法。通过删除ADO库,第一种方法适用于.Accde格式文件。它不适用于.accdb格式文件,但您不想分发它们。