从MSAccess打开MSAccess时如何跳过Autoexec宏?

Chu*_*ckB 9 macros ms-access automation

所以我有一个MSAccess MDB需要打开其他MDB并运行一堆代码来比较两个Access MDB来查找代码差异,查询差异等.目标是验证任何生产MDB未从原始部署中更改.

我的问题是,许多这些Access应用程序都有Autoexec宏,并且没有简单的方法来调用.OpenCurrentDatabase而不运行autoexec宏.

如何使用CODE跳过宏?

我知道我可以按住Shift键.我知道我也可以打开和关闭这个选项.

Fio*_*ala 6

启动时运行的代码可能不在autoexec宏中,它可能是启动形式,因此,您可能希望考虑通过API"以编程方式按shift键":

http://www.mvps.org/access/api/api0068.htm


Chu*_*ckB 5

这是一个偷偷摸摸的解决方案,但对我有用。

我执行Autoexec宏的DoCmd.DatabaseTransfer acImport。然后,我使用DoCmd.DatabaseTransfer acExport将空白自动执行替换为空白。

诀窍是导出将覆盖

DoCmd.TransferDatabase acImport,“ Microsoft Access”,sSourcePath,acMacro,“ autoexec”,“ autoexecSource”

DoCmd.TransferDatabase acExport,“ Microsoft Access”,sSourcePath,acMacro,“ autoexecblank”,“ autoexec”

对于第二个MDB,我再次这样做

DoCmd.TransferDatabase acImport,“ Microsoft Access”,sDestPath,acMacro,“ autoexec”,“ autoexecDest”

DoCmd.TransferDatabase acExport,“ Microsoft Access”,sDestPath,acMacro,“ autoexecblank”,“ autoexec”

然后,我可以进行所有比较以找到两个MDB之间的差异,而无需触发autoexec宏,因为我将它们导入并替换了

然后,我比较导入的两个宏,然后将它们导出回数据库。

DoCmd.TransferDatabase acExport,“ Microsoft Access”,sSourcePath,acMacro,“ autoexecSource”,“ autoexec”

DoCmd.TransferDatabase acExport,“ Microsoft Access”,sDestPath,acMacro,“ autoexecDest”,“ autoexec”

显然,此解决方案仅在Access中使用VBA才有效,但确实有效。

希望这对某人有帮助。