我正在尝试使用当前数据库中的VBA打开另一个数据库,然后关闭我所在的数据库。当我使用此处列出的代码时,它会打开Access但会立即关闭它。我确信这只是我忽略的事情,但过去的一小时我已经摧毁了我的大脑。任何帮助将不胜感激。
Private Sub Command115_Click()
Dim objAccess As Access.Application
Const conPATH = "C:\Users\user\Desktop\Database1.accdb"
'Create an instance of the Access application object.
Set objAccess = CreateObject("Access.Application")
'Open the database
objAccess.Visible = True
objAccess.OpenCurrentDatabase conPATH
'Open the form.
objAccess.DoCmd.OpenForm "Main-Form"
' Maximize other Access window
objAccess.DoCmd.RunCommand acCmdAppMaximize
End Sub
提前感谢您对此事的任何帮助
答案 0 :(得分:3)
如果您使用shell,那么当您关闭第一个数据库时,第二个数据库将保持打开状态。
Sub test()
Dim sh As Variant
sh = Shell("""C:\...\MSACCESS.EXE"" ""C:\...\FileName.accdb""")
End Sub
我猜你的代码不起作用的原因是因为,你开始的第二个访问是第一个存在的对象。第一个关闭并清除其对象/变量的那一刻。它关闭了第二个。
答案 1 :(得分:0)
假设您的第一个应用是access1,它正在尝试打开access2,然后关闭access1应用并将access2作为有效应用。你能做的一件事是, 一旦你的access1应用程序加载尝试以编程方式打开access2应用程序并使其可见,然后使用Application.closeCurrentdatabase关闭access1数据库,然后在access1应用程序窗体的卸载事件中(如果在access1应用程序中有任何表单)调用Application.Quit。
这很有效。