从Excel中,我需要打开一个Access数据库并运行一个数据库的宏。
我正在使用Excel和Access 2007.这是我在Excel中的代码:
Sub accessMacro()
Dim appAccess As New Access.Application
Set appAccess = Access.Application
appAccess.OpenCurrentDatabase "C:\blah.mdb"
appAccess.Visible = True
appAccess.DoCmd.RunMacro "RunQueries.RunQueries"
appAccess.CloseCurrentDatabase
End Sub
在Access数据库中,名为RunQueries的模块中有一个名为RunQueries的过程。每次运行时,都会出现以下错误:
Runtime error '2485':
Microsoft Access Office can't find the object 'RunQueries.'
我也尝试过:
appAccess.DoCmd.RunMacro "RunQueries"
我收到相同的错误消息。知道怎么做吗?顺便说一句,我可以对我为什么需要这样做进行长时间的解释,但是我只想说我已经反对它了,我必须这样做(意思是,我必须使用Excel作为一个前端打开几个Access dbs并运行它们的宏。)
答案 0 :(得分:4)
这种语法怎么样?
appAccess.run "RunQueries.RunQueries"
顺便说一句,我总是避免像程序一样命名模块。这是在寻找麻烦。
答案 1 :(得分:3)
Sub accessMacro()
Dim appAccess As Access.Application
Set appAccess = New Access.Application
appAccess.OpenCurrentDatabase "C:\blah.mdb"
appAccess.Visible = True
appAccess.DoCmd.RunMacro "Macro Name" '<-- As it appears in the Macro Group in the Access Interface.
appAccess.CloseCurrentDatabase
End Sub
答案 2 :(得分:1)
这个怎么样:
appAccess.Modules.Application.Run "macro_name"
宏名称不需要模块名称对我起作用。
答案 3 :(得分:0)
试试这个,
Sub accessMacro()
Dim appAccess
设置appAccess = CreateObject(“Access.Application”)
appAccess.OpenCurrentDatabase“C:\ blah.mdb”
appAccess.Visible = True
appAccess.DoCmd.RunMacro“RunQueries.RunQueries”
appAccess.CloseCurrentDatabase
End Sub
答案 4 :(得分:0)
msdn网站并没有太多亮点,但我觉得他们的免责声明适用于此。这是他们提到的:
如果您运行包含RunMacro方法的Visual Basic代码 库数据库,Microsoft Access查找具有此名称的宏 在库数据库中,并没有在当前查找它 数据库中。
当然,他们没有提到如何解决这个问题!但在回顾上述答案后,我认为发表完整答案会有所帮助:
Sub accessMacro()
Dim appAccess As New Access.Application
Set appAccess = Access.Application
appAccess.OpenCurrentDatabase "C:\blah.mdb"
appAccess.Visible = True
appAccess.Run "RunQueries"
appAccess.CloseCurrentDatabase
End Sub
当我运行它时,这很有用。祝好运! :d -Reverus
答案 5 :(得分:0)
此版本未专门解决“ RunQueries”版本,但在Access 2019中有效。
请注意,Application对象的创建和初始化方式与前面的示例有所不同(以Set [object] = Nothing结尾)。
尽管未提及,但TXE_DEN.accdb与一个单独的库数据库MLO_Library.accdb有一个关联,并且在Library中的DEN访问例程中有很多子例程。示例中的宏位于TXE_DEN数据库中,而不是库中。如果它在库中,我不知道是否可以通过所示的TXE_DEN数据库对其进行访问。
另外,在导航窗格中,示例宏显示在“无关对象”中。因此,在其他情况下(例如RunQueries),可能需要在标识符中包含模块名称。
为避免混淆,此宏对Excel中的任何内容均不起任何作用。只是“嗯,我正在运行此EXCEL东西,而且我还需要运行THAT ACCESS东西,所以我将转到Access并运行它,然后继续执行我的EXCEL东西。”
Sub Run_Access_Macro()
Dim appAccess As Object
Set appAccess = CreateObject("Access.Application")
Dim AccessDB As String
AccessDB = "F:\PATH WITH SPACES\TDN\TXE_DEN.accdb"
' format: module.macro
Dim AccessMacro As String
AccessMacro = "0 - Import TDN"
appAccess.OpenCurrentDatabase AccessDB
appAccess.Visible = True
appAccess.DoCmd.RunMacro AccessMacro
appAccess.CloseCurrentDatabase
Set appAccess = Nothing
End Sub