У меня есть личное приложение БД, которое изначально было разработано с использованием формата mdb в Access 2007. По соображениям безопасности я преобразовал его в .accdb.Все функции преобразуются нормально, кроме функции смены пароля БД.Эта функция выполняется в 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 сделать это.