如何在当前打开的数据库上通过 excel VBA 运行访问宏?
Posted
技术标签:
【中文标题】如何在当前打开的数据库上通过 excel VBA 运行访问宏?【英文标题】:How to run an access macro via excel VBA on a database which is currently open? 【发布时间】:2019-05-16 08:50:56 【问题描述】:我正在设置一个运行 access 数据库宏的 vba 代码。 我开始的代码如下:
Sub import()
Dim appAccess As Object
Set appAccess = CreateObject("Access.Application")
Call appAccess.OpenCurrentDatabase("database link")
appAccess.UserControl = True
appAccess.DoCmd.RunMacro "Macro name"
End Sub
在这种情况下,数据库被打开并且宏运行,但我只需要宏在已经打开的数据库上运行。
谢谢
【问题讨论】:
数据库打开,宏运行,但我只需要宏在已经打开的数据库上运行 抱歉,您能说得更具体点吗? 在打开的数据库上运行宏是什么意思?您是否打开了 2 个数据库并希望将宏 od DB1 运行到 DB2 中? 打开是指另一个宏打开的连接?您可以将变量设置为全局变量,并从任一宏中重用它们(前提是您确保首先初始化它们)。 @FoxfireAndBurnsAndBurns 数据库已经打开。我需要一种方法来激活它,以便我可以通过 excel 中的 vba 代码运行访问宏 但是你说宏运行,那有什么问题呢? 【参考方案1】:从一个代码模块你可以简单地
DoCmd.RunMacro "Macro name"
将在当前数据库中执行
如果您尝试从其他应用程序(例如 Excel)执行此操作,您可以
Dim accApp As Access.Application
Set accApp = GetObject(, "Access.Application")
但你应该检查
accApp.CurrentDb.Name
确保您查看的是正确的数据库
(话虽如此,如果您想操作数据库中的数据,使用 ADO 或 DAO 有更好的方法。上述方法可行,但永远不会很稳定)。
【讨论】:
以上是关于如何在当前打开的数据库上通过 excel VBA 运行访问宏?的主要内容,如果未能解决你的问题,请参考以下文章
在excel中如何使用vba实现将sql的数据快速写入excel