在Access 2007中执行任何VBA代码时“找不到文件”

时间:2013-04-10 17:41:24

标签: vba ms-access

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

  

找不到文件

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

经过一些研究,我发现其他人遇到了同样的问题,例如thisthis链接。还有其他一些例子,还没有真正的解决方案。

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

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

有什么问题?数据库是否部分损坏?我该怎么办?这真令人讨厌。

15 个答案:

答案 0 :(得分:14)

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

有关反编译+紧凑+重新编译步骤的详细说明here注意:请务必在回答中阅读David W. Fenton的其他建议。

答案 1 :(得分:3)

我刚刚第一次体验过这个。我在表单中进行了大量的编码更改,并且需要在不完成代码调试的情况下重启我的PC。当我打开应用程序时,我立即得到了未找到的"文件"消息(它会自动启动另一种形式)。

一时兴起,我去了有问题的表格并评论说整个模块的代码和问题都消失了。在我重新进入并取消注释该代码后,一切仍然正常。我能够继续调试该代码,并在一天中的其他时间幸福地生活。

答案 2 :(得分:2)

虽然这个帖子超过一年了但我想分享另一个非常有用的观察。

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

详细说明: 虽然编程VBA多年了,但我从未有过一个未经请求的“File not found:”错误。奇怪的是,错误消息没有为找不到的文件提供文件名。 (提醒我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中再次使用此文件后添加新的见解。)

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

干杯!

答案 3 :(得分:2)

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

我的数据库也已经通过了多个版本的Access。打开数据库时,它显示“找不到文件”,并抛出一个公共模块(我最近没有在其中广泛使用过该模块),而没有打开Autoexec(总机)窗体。 “调试,编译”是可能的,并且没有任何问题。

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

没有一个明显的模块,尽管如果问题仍然以麻烦的方式持续存在,我可能会怀疑我最近使用的表单模块。

现在,几天后,我对数据库进行了反编译,压缩和重新编译,将其大小减小了一半,因此也许可以解决问题。但愿如此。

答案 4 :(得分:1)

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

答案 5 :(得分:1)

我有同样的问题MS Excel。

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

我查看了上面提到的所有内容,没有任何更改或帮助。

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

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

我注意到了一个错误的工作原因,你在相关按钮的第一行代码上创建一个断点,然后在休息时恢复 - 我认为这有助于Excel评估和命名模块而不是导致冲突。

答案 6 :(得分:1)

我找到了另一个解决方案(至少在我的情况下):在尝试查找错误时,我测试了我在同事计算机上创建的应用程序。这会以某种方式重置文件中的乱七八糟的东西。之后我又能够在我的电脑上打开文件,一切正常!

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

答案 7 :(得分:1)

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

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

因为我正在努力解决这个问题,所以错误以其他方式解决了,但没有一个是可重复的。

答案 8 :(得分:0)

我刚遇到这个问题。在我的情况下,我认为问题是有一个空白的VBA模块。我正在将程序从一个模块移动到另一个模块,最后用一个空白模块。我无法手动删除模块,每次我尝试创建删除空白模块的过程时,我收到“找不到文件”错误,我刚刚创建的过程被清空。我最终恢复了备份。

答案 9 :(得分:0)

我遇到了类似的问题。空白"未找到文件"错误。

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

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

我怀疑这会修复许多"文件未找到"错误可能与临时链接表因任何原因丢失引用有关。

答案 10 :(得分:0)

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

答案 11 :(得分:0)

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

答案 12 :(得分:0)

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

答案 13 :(得分:0)

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

我的解决方案

总而言之,我发现了以下内容。

  1. 执行反编译(无需重新编译)将消除该错误-但是,如果代码在另一台计算机上运行,​​该错误会再次出现。

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

答案 14 :(得分:0)

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