如何在当前打开的数据库上通过 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 运行访问宏?的主要内容,如果未能解决你的问题,请参考以下文章

在VBA中,怎样打开或者调用另一个EXCEL文件

求问:excel VBA对一个已经打开的网页进行操作

在excel中如何使用vba实现将sql的数据快速写入excel

excel vba 运行时错误

VBA 有时无法识别通过 SAP GUI 脚本打开的 Excel 文件

如何通过 Access VBA 正确访问 Excel 文件