上周我在程序崩溃时修改了访问2010 db中的两个模块的部分,并且每次我尝试打开db时都会崩溃。我能够创建一个新数据库并从损坏的数据库中导入表和查询,但是当我尝试导入表单/宏/模块时,新数据库也会开始崩溃。我保留每日备份,但最终失去了几个小时的工作量。这种情况上周发生了两次,每次MS Access都会在没有警告的情况下崩溃并且VBA无法恢复。
该功能按预期工作,直到db似乎在某个未知点崩溃。我的VBA代码一定存在某种问题,因为这只是在我上周开始修改模块时才开始发生,但我无法确定它,因为在没有执行任何操作时实际发生了崩溃。即在保存期间。
有没有人知道是否可以将VBA导出而不将其导出到另一个数据库?即导出它而不必使用MS Access这样做。在相关的说明中,是否有人创建了一个库,将查询定义,表模式和所有VBA导出到文本文件中,我可以将它们放到源代码管理中?
感谢。
答案 0 :(得分:5)
除了@Remou建议的方法之外,您还可以尝试使用SaveAsText方法将代码模块保存到文本文件中。
Application.SaveAsText acModule, "Module1", "D:\Access\Module1.txt"
然而,如果不使用Access,这并不能满足您的愿望。
尝试对项目包含已损坏的已编译代码的机会进行反编译操作。您可以在此Stack Overflow问题的2个答案中找到详细的反编译说明:ms-access: HOW TO decompile and recompile
反编译后,请确保所有模块在其声明部分中包含Option Explicit
。检查项目的引用,并修复任何损坏(缺失)。然后从VB编辑器的主菜单运行Debug-> Compile,以验证代码编译没有错误。
这些步骤是我能提供的最佳措施,可以减少持续腐败问题的可能性。
要将源代码管理与Access集成,请从选择的相关Stack Overflow线程开始:site:stackoverflow.com ms-access version control
答案 1 :(得分:0)
民间
我们遇到了同样的问题。 SP1中有一个错误导致它。如果你继续打开数据库,你最终会得到一个有效的备份 - 重命名旧的BROKEN并从新数据库中删除_backup,你就可以直到下一个开发阶段了。我们的IT人员(Microsoft Gold Partners)正在查看http://answers.microsoft.com/en-us/office/forum/office_2010-access/access-2010-sp1-you-receive-random-crashes-in/d2bf6175-075a-4a12-a2b1-f55d40af271b
上报告的修复程序我可能会去看看反编译/重新编译,但是因为我们的一些数据库已经从Access 97,到2000,2003,现在仍然是mdb / 2003文件格式,在2010年下运行。已经说过了,转换为accdb / 2007似乎更糟糕!