访问VBA应用程序。退出关闭多个数据库

时间:2019-03-13 13:18:08

标签: vba ms-access

我为数据库用户创建了一个启动应用程序,以打开特定数据库的前端。例如,用户打开启动应用程序(它是共享网络上的Access DB),然后执行以下操作:

  • 将前端数据库从共享网络位置复制到用户的本地驱动器
  • 打开前端数据库的本地副本
  • 关闭启动应用

此过程使我可以更轻松地实现对前端的更新,并且几乎对每个人都有效。但是,有几个用户遇到相同的问题。当他们打开启动应用程序时,前端被复制到其本地驱动器并打开,但是当调用“ Application.Quit”行时,启动应用程序和前端都关闭。

有人知道这是什么原因吗,为什么它只会影响某些用户而不影响其他用户?以下是启动应用程序中的代码示例,该示例打开本地db(从网络位置复制后),然后关闭自身(并被设置为应该以使前端保持打开状态)。

Dim appAccess As Access.Application

    Set appAccess = CreateObject("Access.Application")
    appAccess.OpenCurrentDatabase "C:\Databases\Database1.accdb"
    appAccess.Visible = True
    appAccess.RunCommand acCmdAppMaximize
    Set appAccess = Nothing

    Application.Quit

谢谢!

蒂姆

1 个答案:

答案 0 :(得分:4)

问题是:新打开的应用程序只是一个变量,和任何变量一样,一旦超出范围,它就会被销毁。

为避免发生这种情况,请将.UserControl设置为True,以指示用户正在控制该应用程序并负责关闭该应用程序。

Dim appAccess As Access.Application
Set appAccess = CreateObject("Access.Application")
appAccess.OpenCurrentDatabase "C:\Databases\Database1.accdb"
appAccess.Visible = True
appAccess.UserControl = True
appAccess.RunCommand acCmdAppMaximize
Set appAccess = Nothing
Application.Quit