如何导出Access 2010数据宏

时间:2012-02-09 06:04:58

标签: ms-access macros ms-access-2010 ms-access-data-macro

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

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

如果我只需要这样做就不会那么重要,但我需要在开发项目的过程中多次这样做。

我已经尝试将表导出到xml,但不包括数据宏。

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

5 个答案:

答案 0 :(得分:8)

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

要导出:

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

要导入:

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

答案 1 :(得分:5)

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

  

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

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

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

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

答案 2 :(得分:3)

我在这里没有很好的答案。

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

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

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

enter image description here

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

enter image description here

所以你可以从那些宏中剪切+粘贴。

如上所述,因此在过去我经常记录变化的“日志”。

因此,如果我在网站外工作,我修改了2个代码模块,4个表单和2个报告,那么我有一些变化记录。我会在这张表中输入更改的对象。

当我到达现场时,我快速浏览一下该表,我知道要导入3-5个对象,这样的导入仅需几分钟。

但是,使用表触发器和存储过程,您可以拥有更多只需要复制的内容。

我会做两件事之一:

使用日志创意和

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

b)当你对触发器进行更改时,然后剪切+粘贴到记事本文档中并将它们放在目录中。在现场时,只需将每个记事本,剪切+粘贴到生产中,然后将记事本项目移动或复制到“完成”文件夹中。

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

所以在过去我经常写下这样的表格已被修改,我必须添加这样的专栏。

所以你真的可以选择是否要将宏代码作为xml剪切+粘贴到单独的小文档中,或者从开发中剪切+粘贴到生产中。

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

因此,只需导入表单,代码模块,宏等(您可以删除表单等,只需从未发布的副本导入)。

但是,对于表格代码?您必须一次从未发布的副本中剪切+粘贴到某个临时区域,或者在应用程序之间剪切+粘贴。

有可能保存为文本可能在这里工作,但我还没有时间做出更好的解决方案。

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

答案 3 :(得分:0)

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

但是我希望它从按钮运行,我发现了一种简单的方法,无需编写任何vba代码。

首先需要手动导出表或查询,方法是右键单击表或查询并选择export并选择xml作为文件类型。最后,您可以保存导出步骤,只需勾选该框以保存步骤并为导出步骤指定相应的名称。完成此操作后,您可以使用RunSavedImportExport操作通过宏运行导出步骤。只需选择手动导出时创建的已保存导出的名称。任务完成。希望这有助于其他人。

答案 4 :(得分:0)

右键单击宏并选择Export,然后选择要接收宏的数据库。