【问题标题】:Opening a new DB with VBA使用 VBA 打开新数据库
【发布时间】:2014-05-07 01:20:21
【问题描述】:

我正在尝试使用 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

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

【问题讨论】:

  • 尝试将您的 Access 对象添加到模块中的公共集合中?
  • 我将代码作为公共函数放在模块中,然后以相同的结果调用它。这是你要我做的还是我误会了?

标签: vba ms-access ms-access-2007


【解决方案1】:

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

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

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

【讨论】:

  • 这是一个用于访问命令行开关的链接。当您打开 accdb/mdbs 时,您可能会发现它们很有用。 office.microsoft.com/en-ca/access-help/…
  • 完美!刚刚添加了 vbMaximized 焦点并关闭了这个。非常感谢!
【解决方案2】:

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

这行得通。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-07-24
    • 2018-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-05
    • 2023-03-17
    相关资源
    最近更新 更多