如何从另一个MS Access运行MS Access数据库中定义的宏?

时间:2014-10-29 06:03:12

标签: access-vba ms-access-2010

我有一个可公开访问的ms访问文件 - Frontend.accdb,所有表都链接到另一个名为Data.accdb的受保护ms访问数据库。 data.accdb中定义了一个导入作业,它将数据带入data.accdb,打开时将更新为Frontend.accdb。

我想在我的frontend.accdb中添加此导入作业,以便通过单击frontend.accdb中的按钮,data.accdb将被刷新,并且Frontend.accdb中的表将填充新数据。

2 个答案:

答案 0 :(得分:0)

如果后端表在前端链接,则应将宏移动到前端数据库以对链接表进行操作。

您可以使用此处讨论的shell命令

How to programatically call a macro in a different (ie. external) Access database using VBA?

但是这可能会使确保宏运行正确和其他错误陷阱的问题复杂化。

答案 1 :(得分:0)

您可以从前端打开后端数据库并使用'应用程序'运行宏。对象

Dim appAccess As New Access.Application

'Opening backend database
appAccess.Visible = False 'This can only be here once everyone has trusted the 
appAccess.OpenCurrentDatabase "PathtoBackend" & "\data.accdb"

'Time acknowledge the Trust popups if they haven't trusted the db
 Do
    Sleep 1000 'Assumes you have the Win API Sleep command available. 
    DoEvents
Loop While Not appAccess.CurrentProject.IsTrusted

appAccess.Run "Import Data Macro Name"
appAccess.CloseCurrentDatabase
appAccess.Quit

OR

将整个表更新宏移动到前端,并使用TransferDatabase将数据从源推送到前端,然后推送到后端中的链接表。

'Bunch of code that builds the DAO or ADO objects from the source data    
Docmd.TransferDatabase acLink, , "PathToBackend" & "\data.accdb", acTable, "FrontEndTableNameContainingSourceData", "BackendTableNameDestination", , )