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 打开主数据库,但无法通过这种方式传递密码。
如何关闭第一个数据库,同时保持第二个数据库打开?
您可以使用以下内容:
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,它强制数据库保持可见,并在对应用程序对象的引用被销毁后立即阻止它关闭。
可以在此答案中找到存储使用加盐用户密码加密的主数据库密码的示例数据库
| 归档时间: |
|
| 查看次数: |
7792 次 |
| 最近记录: |