打开从Excel VBA到特定表单和记录的运行时访问

时间:2017-05-19 03:52:16

标签: excel-vba ms-access vba excel

我有一个提供一套报告的Excel工作簿。数据来自Access数据库,ole db连接等。

我在主Excel工作表上有一个交换机类型屏幕,其中包含用于查看各种报告的按钮,以及用于打开添加新数据表单和编辑所选数据表单的按钮。我使用Excel模块中的以下代码安装了完整访问权限,在我的机器上完美地完成了所有这些工作。

Sub OpenFormAmend()

Dim ac As Object
Dim strID As String

strID = Range("IniId").Value


On Error Resume Next


Set ac = GetObject(, "Access.Application")

 If ac Is Nothing Then
 Set ac = GetObject("", "Access.Application")
 ac.OpenCurrentDatabase "C:\Database.accdb"
 ac.DoCmd.OpenForm "frm_Amend", , , "ID =" & strID
 ac.UserControl = True
 Set ac = Nothing
 End If

AppActivate "Microsoft Access"
ac.OpenCurrentDatabase "C:\Database.accdb"
ac.DoCmd.OpenForm "frm_Amend", , , "ID =" & strID

End Sub

但是,仅在具有Access Runtime的用户计算机上完全没有做任何事情。我已经能够打开数据库,下面的代码来自类似的问题。

CreateObject("WScript.Shell").Run ("""C:\Database.accdb""")

但我不知道如何将上述内容打开到特定表单,或打开所选记录。任何有关入门的帮助将不胜感激!

1 个答案:

答案 0 :(得分:0)

在无法返回当前正在运行的实例后,您再次调用GetObject()。你的第二个调用应该是CreateObject()。

使用On Error Resume Next在第一次GetObject调用之前是可以理解的,但你应该在之后立即打开错误报告(例如On Error Goto MyErrorHandler),否则你将不知道出了什么问题......