启动受密码保护的数据库并关闭现有数据库

Ler*_*roy 1 ms-access vba ms-access-2010

我正在尝试设置一个“Launcher”数据库,其中包含 VBA 代码,该代码将打开第二个受密码保护的数据库。然后我可以将启动器数据库转换为 accde,这样包含密码的 VBA 就无法读取。

到目前为止我有以下代码。

Private Sub Form_Load()
 Dim acc As Access.Application
 Dim db As DAO.Database
 Dim strDbName As String

 strDbName = "C:\database Folder\secureDB.accdb"
 Set acc = New Access.Application
 acc.Visible = True
 Set db = acc.DBEngine.OpenDatabase(strDbName, False, False, ";PWD=swordfish")

 acc.OpenCurrentDatabase (strDbName)
 
 Application.Quit
  
End Sub
Run Code Online (Sandbox Code Playgroud)

当启动器数据库打开时,会加载一个表单,该表单随后会触发上述代码。它有效,但问题是最后一行,它旨在仅关闭启动器数据库,但关闭两个数据库。我也尝试过使用 Shell 打开主数据库,但无法通过这种方式传递密码。

如何关闭第一个数据库,同时保持第二个数据库打开?

Eri*_*k A 5

您可以使用以下内容:

Private Sub Form_Load()
 Dim acc As Access.Application
 Dim db As DAO.Database
 Dim strDbName As String

 strDbName = "C:\database Folder\secureDB.accdb"
 Set acc = New Access.Application
 acc.Visible = True
 acc.OpenCurrentDatabase strDbName, False, "swordfish"
 Set db = acc.CurrentDb() 'Don't know why you want a reference to the db
 acc.UserControl = True
 Application.Quit
End Sub
Run Code Online (Sandbox Code Playgroud)

相关部分是acc.UserControl = True,它强制数据库保持可见,并在对应用程序对象的引用被销毁后立即阻止它关闭。

可以在此答案中找到存储使用加盐用户密码加密的主数据库密码的示例数据库