2

我正在尝试使用当前数据库中的 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

提前感谢您在此问题上的任何帮助

4

2 回答 2

3

如果您使用 shell,那么当您关闭第一个数据库时,第二个数据库将保持打开状态。

Sub test()
    Dim sh As Variant
    sh = Shell("""C:\...\MSACCESS.EXE"" ""C:\...\FileName.accdb""")
End Sub

我猜您的代码不起作用的原因是,您开始的第二次访问是第一次访问中存在的对象。第一个关闭并开始对其对象/变量进行清理的那一刻。它关闭了第二个。

于 2013-06-27T12:43:34.197 回答
0

假设您的第一个应用程序是 access1,它正在尝试打开 access2,然后关闭 access1 应用程序并使 access2 成为活动应用程序。您可以做的一件事是,一旦您的 access1 应用程序加载尝试以编程方式打开 access2 应用程序并使其可见,然后使用 Application.closeCurrentdatabase 关闭 access1 数据库,然后在 access1 应用程序表单的卸载事件中(如果 access1 中有任何表单app) 调用 Application.Quit。

这行得通。

于 2014-05-06T17:20:21.963 回答