Chu*_*ckB 9 macros ms-access automation
所以我有一个MSAccess MDB需要打开其他MDB并运行一堆代码来比较两个Access MDB来查找代码差异,查询差异等.目标是验证任何生产MDB未从原始部署中更改.
我的问题是,许多这些Access应用程序都有Autoexec宏,并且没有简单的方法来调用.OpenCurrentDatabase而不运行autoexec宏.
如何使用CODE跳过宏?
我知道我可以按住Shift键.我知道我也可以打开和关闭这个选项.
启动时运行的代码可能不在autoexec宏中,它可能是启动形式,因此,您可能希望考虑通过API"以编程方式按shift键":
http://www.mvps.org/access/api/api0068.htm
这是一个偷偷摸摸的解决方案,但对我有用。
我执行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才有效,但确实有效。
希望这对某人有帮助。