Ms access 如何导出Access 2010数据宏

Ms access 如何导出Access 2010数据宏,ms-access,macros,ms-access-2010,ms-access-data-macro,Ms Access,Macros,Ms Access 2010,Ms Access Data Macro,我需要将Access数据宏从测试数据库传输到生产数据库。有人知道怎么做吗 我知道将表从一个accdb传输到另一个accdb也会传输数据宏,但在我的例子中,这不是一个选项。我也知道我可以在生产accdb中手动重新创建它们,但这会使我容易出错,并且需要关闭生产数据库的时间比脚本传输场景长 如果我只需要做一次,那也没什么大不了的,但是我需要在开发项目的过程中做很多次 我已经尝试将表导出为xml,但是没有包含数据宏 请注意,我在这里询问的是Access 2010数据宏,而不是常规Access宏。我在这里

我需要将Access数据宏从测试数据库传输到生产数据库。有人知道怎么做吗

我知道将表从一个accdb传输到另一个accdb也会传输数据宏,但在我的例子中,这不是一个选项。我也知道我可以在生产accdb中手动重新创建它们,但这会使我容易出错,并且需要关闭生产数据库的时间比脚本传输场景长

如果我只需要做一次,那也没什么大不了的,但是我需要在开发项目的过程中做很多次

我已经尝试将表导出为xml,但是没有包含数据宏


请注意,我在这里询问的是Access 2010数据宏,而不是常规Access宏。

我在这里没有很好的答案

然而,在过去,我经常制作一个表更改的“日志”,然后在网站上简单地使用它

请注意,您可以剪切并粘贴宏代码。代码保存为XML

例如,更新后的表触发器在Access中如下所示:

如果剪切掉上面的内容(ctrl-a、ctrl-cc),则可以将其粘贴到记事本中。事实上,您甚至可以在visual studio或任何xml编辑器中粘贴/打开它,您可以看到:

因此,您可以剪切并粘贴这些宏

如前所述,因此在过去,我经常记录变化

所以,如果我在场外工作,修改了2个代码模块、4个表单和2个报表,那么我会有一个小小的更改日志。我会在这张纸上键入更改的对象

当我到达现场后,我快速浏览了一下那张表,我知道要导入3-5个对象,这样的导入最多只需要几分钟

然而,使用表触发器和存储过程,您可以复制更多的表触发器和存储过程

我会做两件事中的一件:

使用日志思想和

a) 取消发布开发版本,并将其带到您的工作站点。然后导入新表单、报告等。 对于触发器代码,可以在两个应用程序之间剪切+粘贴

b) 当您更改触发器时,请将其剪切并粘贴到便笺簿文档中,并将其放置在目录中。在现场时,只需将每个记事本剪切粘贴到产品中,然后将记事本项目移动或复制到“完成”文件夹中

上述情况肯定不太理想。在过去,我并不总是有代码来编写一个表更改的脚本,使用一个小日志表工作得很好

所以在过去我经常写下,某某表格被修改了,我不得不添加某某列

因此,您可以选择是将宏代码作为xml剪切粘贴到单独的小文档中,还是直接从开发阶段剪切粘贴到生产中

我确实认为,如果您在不同的位置工作,那么我认为最好取消发布开发版本,并随身携带(我假设您知道/认识到您可以制作未发布的web应用程序副本)

因此,表单、代码模块、宏等可以很容易地导入(删除表单等,然后从未发布的副本导入)

但是,对于表代码?您必须将未发布的副本一次剪切粘贴到某个暂存区域,或者在应用程序之间进行剪切粘贴

这里有可能使用另存为文本,但我还没有时间想出更好的解决方案

编辑:
顺便说一句,在上面我假设了一个web服务数据库,但建议仍然适用于非web Access数据库。

您可能需要尝试一对未记录的VBA函数

出口:

SaveAsText acTableDataMacro, "TableName", "C:\PathToFile\DataMacro.xml"
要导入:

LoadFromText acTableDataMacro, "TableName", "C:\PathToFile\DataMacro.xml"

为了扩展Martijn Pieters/Lanik的答案(感谢Martijn和Lanik),我需要在28个不同的表上创建几乎相同的数据宏,每个表上都有一个AfterInsert、AfterUpdate、AfterDelete和命名数据宏。因此,我使用了SaveAsText命令

SaveAsText acTableDataMacro,“表名”,“C:\PathToFile\DataMacro.xml”

创建一个模板,然后使用该模板通过一点vba代码创建28个xml文件,替换表名、主键等。我还创建了28个LoadFromText命令。然后,我可以使用LoadFromText命令以可重复的过程一次加载所有宏。现在我已经完成了测试,我可以通过这种方式快速更新生产数据库,或者轻松地将相同的数据宏添加到其他表中

其他人都知道,LoadFromText会覆盖以前的任何宏,这非常棒,因为我第一次尝试时没有正确的模板


鉴于上述情况,下一步是让“updater”数据库应用程序使用DoCmd.TransferDatabase命令将带有函数/sub的模块以及所有LoadFromText命令传输到Data.accdb。它还应该传输一个宏来运行函数/sub。我尝试让我的更新程序执行宏来加载数据宏,但访问安全性阻止了这一点。因此,您可能需要让用户打开数据库并启用它,然后运行宏。如果我们可以直接编辑数据宏,这将更加复杂,但确实提供了解决问题的解决方法。

我也遇到了同样的问题,无法找到正确的宏以便以xml格式导出。然而,我能够右键单击我的查询并以这种方式导出到xml,所以我知道这是可能的

然而,我希望它从一个按钮上运行,我找到了一个简单的方法,不用编写任何vba代码

首先需要手动导出表或查询,方法是右键单击表或查询并选择导出,然后选择xml作为文件类型。在保存导出步骤的最后,只需勾选框保存步骤并为导出步骤指定适当的名称。完成此操作后,您可以通过ma运行导出步骤