14

我正在使用 Microsoft Access 2007 处理一个大型 Access 2003 项目。最近,一些用户开始遇到我的表单中的按钮问题。例如,在没有任何特定原因的情况下,单击按钮或尝试执行任何代码都会返回错误:

文件未找到

无法进入调试模式。发生这种情况时,唯一要做的就是重新启动数据库。我尝试Stop在已执行块的开头添加命令以尝试对其进行调试,但根本没有执行任何代码。这就像一个编译错误,但它只发生 5-10% 的时间,这真的很奇怪。

经过一些研究,我发现其他人也有同样的问题,例如这个这个链接。还有其他例子,目前还没有真正的解决方案。

我的数据库可以正常使用一周,然后问题再次出现。一半的时间,用户做不了太多;他们需要重新启动数据库一次或两次以使其恢复工作,几分钟后错误可能会再次发生。

因为这是 Access 2007 并且有很多人遇到这个错误,我不敢相信它没有更多的文档记录。

有什么问题?数据库是否以某种方式部分损坏?我该怎么办?这真的很烦人。

4

15 回答 15

15

如果我在这种情况下,我会尝试的第一件事就是对前端数据库文件进行完整的反编译+压缩+重新编译操作,然后将更新的前端分发给用户,看看是否改善事物。

有关反编译+压缩+重新编译步骤的详细说明,请参见此处注意:请务必阅读 David W. Fenton 在他的回答中的其他建议。

于 2013-04-11T16:53:22.147 回答
4

我只是第一次经历这种情况。我一直在对表单进行大量的编码更改,并且需要在未完成代码调试的情况下重新启动我的 PC。当我打开应用程序时,我立即收到“找不到文件”消息(它会自动启动不同的表单)。

一时兴起,我去了有问题的表格并注释掉了整个模块的代码,问题就消失了。在我返回并取消注释该代码后,一切仍然正常。我能够继续调试该代码,并愉快地度过了余下的一天。

于 2015-09-25T17:21:05.393 回答
2

虽然这个帖子已经有一年多了,但我想分享另一个非常有用的观察结果。

此错误“找不到文件:”可能是由于Office版本的不同保存行为引起的,可能与您的代码无关!如果出现此错误,请尝试在另一个 Office 版本中打开并保存有问题的文件,它可能会在您的主 Office 版本中正常工作。

详细信息:尽管多年来一直在编写 VBA,但我从未遇到过主动提出的“找不到文件:”错误。奇怪的是,错误消息没有给出未找到文件的文件名。(提醒我另一个令人讨厌的错误 VBA 有时会在启动时无明显原因且不规律地显示。)幸运的是,这个错误是在我在 PowerPoint 2016 中测试文件后在 PowerPoint 2010 中首次编辑后开始的。打开 .pptm 时发生错误,但我没有涉及文件的启动过程。所以我有了在.pptm zip 存档中找不到某些文件的想法。开始在互联网上进行快速搜索,发现只有“在黑暗中拍摄”的建议。因为我可以比 PowerPoint 2016(不同的 Windows 10 启动分区)更容易地启动 PowerPoint 2013(虚拟机),我试图在 PowerPoint 2013 中打开有问题的文件并且没有问题。我编译了 VBA 项目以检查错误。没有。并保存文件。在 PowerPoint 2013 中重新保存后,该文件在 PowerPoint 2010 中似乎再次正常工作,并且在前几次编辑、保存和重新打开后没有显示任何问题。话虽这么说,我想知道 PowerPoint 2016 保存是否特殊,如果我可以复制/如果在 PowerPoint 2016 中再次保存文件并返回到 PowerPoint 2010,我是否会再次遇到错误。(我会记下这个线程在 PowerPoint 2016 中再次使用此文件后添加新见解。)该文件似乎在 PowerPoint 2010 中再次正常工作,并且在前几次编辑、保存和重新打开后没有显示任何问题。话虽这么说,我想知道 PowerPoint 2016 保存是否特殊,如果我可以复制/如果在 PowerPoint 2016 中再次保存文件并返回到 PowerPoint 2010,我是否会再次遇到错误。(我会记下这个线程在 PowerPoint 2016 中再次使用此文件后添加新见解。)该文件似乎在 PowerPoint 2010 中再次正常工作,并且在前几次编辑、保存和重新打开后没有显示任何问题。话虽这么说,我想知道 PowerPoint 2016 保存是否特殊,如果我可以复制/如果在 PowerPoint 2016 中再次保存文件并返回到 PowerPoint 2010,我是否会再次遇到错误。(我会记下这个线程在 PowerPoint 2016 中再次使用此文件后添加新见解。)

希望这一观察可以避免许多不必要的 Office 卸载/重新安装和其他绝望的尝试。

干杯!

于 2016-05-29T17:51:20.000 回答
2

在 2019 年 8 月更新到 Windows 10 之后,我的一个 .mdb 前端在 Access 2013 中运行,类似的事情刚刚发生了几次。

我的数据库也经历了多个版本的 Access。打开数据库时,它显示“未找到文件”并抛出一个公共模块(不是我最近一直在广泛工作的模块),而无需打开 Autoexec(总机)表单。'Debug, Compile' 是可能的并且没有任何问题。

对我来说也是,在代码的任意位置输入一个空格(或空行或其他字符),然后删除它,然后保存、关闭和重新打开似乎提供了一种解决方法,过去几天一切都很好(我是目前唯一的用户)。

没有一个明显的模块涉及,尽管如果问题以一种麻烦的方式持续存在,我可能会怀疑我最近一直在处理的表单模块。

现在,几天后,我反编译、压缩并重新编译了数据库,将其大小减半,所以也许这样就可以了。但愿如此。

于 2019-08-27T05:27:38.113 回答
1

我刚遇到这个问题。就我而言,我认为问题在于有一个空白的 VBA 模块。我将程序从一个模块移动到另一个模块,最终得到一个空白模块。我无法手动删除模块,每次尝试创建删除空白模块的过程时,我都会收到“找不到文件”错误,并且我刚刚创建的过程被空白。我最终恢复到备份。

于 2013-09-22T20:50:34.680 回答
1

问题只是你的参考。您的参考文件之一已被移动/删除/更新。删除并重新添加您的引用以确定哪一个。

于 2014-03-24T14:35:12.250 回答
1

我有一个类似的问题。一个空白的“找不到文件”错误。

我关闭了自动更正,在点击了几个让我担心的提示/警告后,我重新打开了数据库,错误就消失了。

重新打开数据库时,问题已解决。

我怀疑这将修复许多“找不到文件”错误,这些错误可能与临时链接表因任何原因丢失引用有关。

于 2014-07-23T22:41:47.043 回答
1

我有同样的问题 MS Excel。

在用户按下按钮时,出现了一个无用的 File Not Found 错误。

我浏览了上面所有建议,没有任何改变或帮助。

完全不小心我删除了一个用于更新应用程序状态的模块。这也有一些数组存储。但是,在删除此模块(并在我的代码中注释掉对它的引用)时,似乎该问题现在已在用户之间得到修复。

一个问题是,我在几个不同的 Excel 加载项部署中具有相同的模块名称。我怀疑在第一次运行时 Excel 无法自动假设它们之间的区别。

我注意到一个错误的解决方法,在该错误中,您在有问题的按钮的第一行代码上创建一个断点,然后在中断时恢复 - 我认为这有助于 Excel 评估和命名模块,以免引起冲突。

于 2014-11-26T11:43:58.210 回答
1

我遇到了这个问题并以这种方式解决了它:我消除了 vba 代码所在的表单,并从之前制作的备份文件中导入了相同的表单。

于 2015-01-12T15:21:33.600 回答
1

我找到了另一个解决方案(至少在我的情况下):在试图找到错误时,我测试了我在同事计算机上创建的应用程序。这以某种方式重置了文件中出现问题的任何内容。之后,我能够再次在计算机上打开文件,一切正常!

编辑:我已经意识到错误,我的情况,似乎以某种方式与我使用 SendKeys 相关(请参阅我在此处自动生成报告的尝试)。

于 2015-07-30T13:19:37.860 回答
1

有同样的问题。我偶然发现了修复。无论出于何种原因,只需添加一个单击事件过程就可以使一切变得更好。

  • 以设计模式打开表单
  • 在表单上选择一个对象
  • 按 F4 显示对象的属性
  • 对象属性
  • 事件 > 单击时 > 下拉列表 > 单击 [事件过程]
  • 然后单击三个点,这将创建一个新事件,并启动 Visual Basic 编辑器。这也会将默认代码添加到 Visual Basic 编辑器中
  • 不做其他更改
  • 保存并关闭对表单的更改
  • 重启数据库

对于它的价值,当我正在努力解决这个问题时,错误以其他方式自行解决,但没有一个是可重复的。

于 2016-04-12T17:56:51.423 回答
1

我也遇到了这个问题,compact/repair 没有解决。在我的例子中,我有一个不再使用的旧 VBA 模块,它引用了一个不再存在的对象类。删除非编译代码为我解决了这个问题。

于 2017-11-07T20:29:18.043 回答
1

多年来,我在 access 2010 中遇到了这个问题。总是在 msaccess 启动时打开的 Autoexec 表单中。我尝试创建一个非常简单的表单来调用原始更复杂的表单。令我惊讶的是,更多的问题移动了新的简单表格。通过反复试验,我发现只需编辑新的简单 Autoexec 表单,问题就会消失,但几个月后总是在我在其他地方进行编程更改后随机出现。有时,我得到的不是文件未找到错误,而是崩溃无法访问 - 但解决方案是相同的过程 - 对 autoexec 文件进行小编辑(只需添加新的空白行即可)。我的项目经历了许多版本的访问(2000 -> 2010)。如果有某种方法可以自动编辑我的 autoexec 表单,然后重新启动访问 - 这将作为一种解决方法。

于 2018-05-05T21:01:18.010 回答
0

在我的访问数据库中,我多年来一直遇到这个问题。我尝试了上述所有解决方案,它们都解决了问题,只是在稍后的某个时间再次出现问题 - 总是在 VBA 代码更改之后。我发现反编译然后重新编译总是可以解决这个问题,并且是最快和最简单的方法。所以我得出的结论是,在程序更改(如宏和 VBA 代码更改)后,Office 仅部分编译存在错误。经过多次更改后,系统“精神错乱”并抛出“找不到文件”错误。通读用户在此博客中找到的修复程序支持我的理论。几乎所有这些修复可能会导致某种排序并重新编译失灵的代码。

我的解决方案

总之,我发现了以下内容..

  1. 进行反编译(无需重新编译)将消除错误 - 但如果代码在不同的机器上运行,错误会再次出现。

  2. 进行反编译,然后重新编译,然后是压缩和修复结果,使我的应用程序可以在其他机器上运行而没有任何问题。

于 2020-12-06T18:41:27.120 回答
0

我有一个未使用的类模块 - Class1。我删除了它并进行了压缩和修复。发生了一些事情,导致类模块的名称保留在导航窗格中,但模块本身已被删除:打开 VBA 编辑器时,我得到“找不到文件”。无法从导航窗格中删除名称!!反编译项目时出现“加载'Class1'时发生错误。您要继续加载项目吗?” 我做到了 - 现在再次打开项目时 Class1 仍在导航窗格中,但现在我可以从导航窗格中删除。之后不再出现有关找不到文件的消息。供参考

于 2021-03-14T02:06:02.147 回答