从 VBA 代码中转储 MS Access 宏对象信息

Posted

技术标签:

【中文标题】从 VBA 代码中转储 MS Access 宏对象信息【英文标题】:Dump MS Access Macro object info from VBA code 【发布时间】:2011-08-07 08:42:34 【问题描述】:

我有一个项目,我需要在其中比较不同版本的 Access 2003 数据库。我们对表格中的数据不感兴趣。我们只对描述数据库的对象感兴趣。 IE。表单对象、报表对象、QueryDefs、TableDefs 等。数据库相当大,因此方法是将感兴趣对象的所有描述转储到文本文件中,方法是在每个数据库中运行 VBA 应用程序,然后比较结果一个差异查看器。

几天来,我一直在寻找如何从 VBA 中动态转储 access 2003 宏内容。请不要将此与从 VBA 转储 VBA 代码混淆。

我知道 Application.CurrentDB.AllMacros 以获取活动访问数据库中的宏列表。但我无法从 Macro(MacroName).SomeProperty 获取宏对象,因为宏未打开。所以我一直在尝试寻找一种打开宏的方法,但没有找到通过VBA实现这一点的方法。

如有任何关于该主题的帮助,我们将不胜感激。

谢谢!

【问题讨论】:

*** 不是论坛。请查看FAQ。 【参考方案1】:

您可以使用未记录的 Application.SaveAsText 导出宏:

  Application.SaveAsText acMacro ,"AutoKeys", "AutoKeys.txt"

...将 AutoKeys 宏保存到当前目录。

【讨论】:

【参考方案2】:

您可以手动要求 Access 将宏转换为 VBA。有一个选项,我想当你右键单击宏时。之后就可以比较生成的VBA了。

【讨论】:

我确实考虑过这一点。但是我不确定这是否是正确的答案,因为每次宏中发生更改时客户端都必须执行此步骤,并且事情很容易不同步。也许正确的做法是通过vba将宏转换为vba? @Ben:无论如何,我真的不明白你的问题的兴趣。为什么要“每次宏发生更改时执行此步骤”??我的意思是:1)摆脱宏,2)如果你使用正确拆分的数据库,你只需复制前端,最终重新链接表,你就完成了!【参考方案3】:

有关比较 Access 数据库的实用程序列表,请参见以下页面 http://www.granite.ab.ca/access/thirdparty.htm

【讨论】:

以上是关于从 VBA 代码中转储 MS Access 宏对象信息的主要内容,如果未能解决你的问题,请参考以下文章

在 ms access 2010 中将嵌入式宏转换为 vba 后,代码不再起作用

VBA (Ms-Access) 从宏调用成员函数

MS Access VBA从Web浏览器控件的内容中获取数据

MS Access 中 VBA 代码与宏的优缺点是啥?

我希望从 ms-access 2013 数据库中的所有表单、报告和模块中导出 vba 源代码

MS Access VBA 导出查询结果