"Файл не найден" при выполнении любого кода VBA в Access 2007

Я работаю над большим проектом Access 2003 с Microsoft Access 2007. Недавно некоторые пользователи начали испытывать проблемы с кнопками в моих формах. Например, без какой-либо конкретной причины нажатие на кнопку или попытка выполнить любой код вернет ошибку:

Файл не найден

Нет способа перейти в режим отладки. Когда это происходит, единственное, что нужно сделать, это перезапустить базу данных. Я попытался добавить команду Stop в начале исполняемого блока, чтобы попытаться отладить его, но код вообще не выполняется. Это похоже на ошибку компиляции, но это происходит только в 5-10% случаев, что действительно странно.

После некоторых исследований я обнаружил, что у других людей такая же проблема, например, эта и эта ссылка. Есть и другие примеры, но пока нет реальных решений.

Моя база данных может быть в порядке в течение недели, а затем проблема начинает повторяться. Половина времени и пользователи не могут многое сделать; им нужно перезапустить базу данных один или два раза, чтобы она снова заработала, и через несколько минут ошибка может повториться снова.

Поскольку это Access 2007, и есть много людей, сталкивающихся с этой ошибкой, я не могу поверить, что она не более задокументирована.

В чем проблема? База данных как-то частично повреждена? Что я должен делать? Это действительно раздражает.

Ответ 1

Если бы я был в этой ситуации, одна из первых вещей, которые я постарался бы сделать, заключалась бы в том, чтобы выполнить полную декомпилирующую + компактную + перекомпилированную операцию в файле базы данных front-end, а затем распространить этот обновленный интерфейс для пользователей на посмотрите, улучшает ли это.

Подробные инструкции по этапам декомпиляции + компактные + перекомпиляции доступны здесь. Примечание: Обязательно прочитайте в своем ответе Дэвида У. Фентона дополнительные рекомендации.

Ответ 2

Я только что испытал это в первый раз. Я делал обширные изменения в кодировке в форме и должен был перезагружать свой компьютер, не закончив отладку кода. Когда я открыл приложение, я сразу получил сообщение "файл не найден" (он автоматически запускает другую форму).

По прихоти я подошел к рассматриваемой форме и прокомментировал весь код модуля, и проблема исчезла. После того, как я вернулся и раскоментировал этот код, все по-прежнему работало нормально. Я смог продолжить отладку этого кода и счастливо прожил остаток дня.

Ответ 3

хотя этот поток уже более года, я хотел бы поделиться другим очень полезным наблюдением.

Эта ошибка "Файл не найден:" может быть вызван различиями в сохранении версий Office и может не иметь никакого отношения к вашему коду! В случае этой ошибки попытайтесь открыть и сохранить ваш проблемный файл в другой версии Office, и он может отлично работать в вашей основной версии Office.

Подробнее: Хотя программирование VBA уже много лет, у меня никогда не было незапрашиваемой ошибки "Файл не найден:". Странно также, что сообщение об ошибке не дает имени файла для файла, который не найден. (Напомнил мне другую неприятную ошибку, которую VBA иногда показывает при запуске без какой-либо подозрительной причины и беспорядочно.) К счастью, эта ошибка началась после моих первых изменений в PowerPoint 2010 после проверки файла в PowerPoint 2016. Ошибка при открытии .pptm, но я не было никакой процедуры запуска с участием файла. Так что у меня есть идея о том, что какой-либо файл в архиве zip-архива .pptm не найден. Начал быстрый поиск в Интернете и нашел только предложения "стрельба в темноте". Поскольку я могу легко запустить PowerPoint 2013 (виртуальную машину), чем PowerPoint 2016 (другой загрузочный раздел Windows 10), я попытался открыть проблемный файл в PowerPoint 2013 и не имел проблем. Я скомпилировал проект VBA, чтобы проверить наличие ошибки. Ничего. И сохраните файл. После повторного сохранения в PowerPoint 2013 файл, похоже, снова работает отлично в PowerPoint 2010 и не обнаружил никаких проблем после первых нескольких изменений, сохраняет и повторно открывает. При этом я задаюсь вопросом, является ли сохранение PowerPoint 2016 своеобразным, и если я могу реплицировать/если я снова заработаю ошибку, если снова сохраню файл в PowerPoint 2016 и вернусь в PowerPoint 2010. (Я запомню этот поток чтобы добавить новые идеи после того, как я снова работал с этим файлом в PowerPoint 2016.)

Надеемся, что это наблюдение может избавить многих ненужных не-повторных установок Office и других отчаянных попыток.

Ура!

Ответ 4

Подобные вещи только что случались со мной пару раз, когда один из моих .mdb-интерфейсов работал в Access 2013, после обновления августа 2009 года до Windows 10.

Мои БД тоже прошли через несколько версий Access. При открытии базы данных он говорит "Файл не найден" и выдает открытый модуль (не тот, над которым я недавно много работал), не открывая форму Autoexec (Switchboard). "Отладка, компиляция" возможна и не предлагает никаких проблем.

Для меня тоже: один пробел (или пустая строка или другой символ) где-нибудь в коде, а затем его удаление, сохранение, закрытие и повторное открытие, казалось, предоставили обходной путь, и все было хорошо в течение последних нескольких дней ( Я единственный пользователь в настоящее время).

Там нет ни одного очевидного модуля, хотя я, вероятно, заподозрю модуль формы, над которым я работал совсем недавно, если проблема не решится.

Теперь, несколько дней спустя, я декомпилировал, сжал и заново скомпилировал базу данных, вдвое уменьшив ее размер, так что, возможно, это сработает. Я надеюсь, что это так.

Ответ 5

У меня была эта проблема. В моем случае, я думаю, проблема связана с пустым модулем VBA. Я двигал процедуры с одного модуля на другой и заканчивал пустым модулем. Я не мог удалить модуль вручную, и каждый раз, когда я пытался создать процедуру для удаления пустых модулей, я получил ошибку "Файл не найден", и процедура, которую я только что создал, была закрыта. Я закончил возврат к резервной копии.

Ответ 6

Проблема - это только ваши рекомендации. Один из файлов для ваших ссылок был перемещен/удален/обновлен. Удалите и повторно добавьте свои ссылки, чтобы выяснить, какой из них.

Ответ 7

У меня была проблема, подобная этому. Пустая ошибка "Файл не найден".

Я отключил AutoCorrect и после нажатия нескольких приглашений/предупреждений, которые меня беспокоили, я снова открыл базу данных, и ошибка исчезла.

При повторном открытии базы данных проблема была решена.

Я подозреваю, что это исправит многие ошибки "Файл не найден", которые, вероятно, связаны со временной таблицей ссылок, теряющей ссылку по любой причине.

Ответ 8

У меня была такая же проблема MS Excel.

При нажатии пользователем кнопки появляется бесполезная ошибка "Файл не найден".

Я просмотрел все предлагаемые выше и не изменил или не помог.

ПОЛНОСТЬЮ СЛУЧАЙНО Я удалил модуль, который я использую для обновления статуса приложения. У этого также есть некоторое хранилище массива. Однако при удалении этого модуля (и комментировании ссылок на него в моем коде) кажется, что проблема теперь исправлена ​​для пользователей.

Одна проблема, есть ли у меня одно имя модуля в нескольких разных вариантах надстройки Excel. Я подозреваю, что при первом запуске Excel не может автоматически принять разницу между ними.

Я заметил WORK AROUND для ошибки, в которой вы создаете точку прерывания в первой строке кода для данной кнопки, а затем возобновляете ее при разрыве. Я предполагаю, что это помогло Excel оценить и пропустить пространство модулей, чтобы не было вызвать конфликты.

Ответ 9

У меня была эта проблема и она была решена так: я исключил форму, в которой был код vba, и импортировал ту же форму из файла резервной копии, сделанного ранее.

Ответ 10

Я нашел еще одно решение (по крайней мере, в моем случае): пытаясь найти ошибку, я протестировал приложение, которое я создал на компьютере коллег. Это как-то reset все, что попало в файл в haywire. Впоследствии я смог снова открыть файл на своем компьютере, и все сработало так, как должно!

EDIT: я понял, что ошибка в моем случае, похоже, связана каким-то образом с моим использованием SendKeys (см. мою попытку автоматизировать отчет здесь на SO).

Ответ 11

Была та же проблема. Я случайно наткнулся на исправление. По какой-то причине просто добавление процедуры "click-on-click" сделало все лучше.

  • Открыть форму в режиме разработки
  • Выберите объект в форме
  • Нажмите F4, чтобы отобразить свойства объекта
  • свойства объекта
  • Событие > В раскрывающемся списке "Нажмите" > нажмите [Процедура событий]
  • Затем щелкните три точки, которые создадут новое событие, и запустите редактор Visual Basic. Это также добавит код по умолчанию в редактор Visual Basic
  • Не вносите никаких изменений.
  • Сохранить и закрыть изменения в форме
  • Перезапустить базу данных

Для чего стоит, когда я боролся с этой проблемой, ошибка разрешалась другими способами, но ни одна из них не была повторяемой.

Ответ 12

У меня тоже была эта проблема, и компактный/ремонт не исправил ее. В моем случае у меня был старый модуль VBA, который больше не использовался, и который ссылался на класс объекта, который больше не существует. Удаление некомпилирующего кода исправило проблему для меня.

Ответ 13

Я имел эту проблему в течение многих лет в доступе 2010. Всегда в форме Autoexec, которая открывается при запуске msaccess. Я попытался создать очень простую форму, которая вызывает исходную более сложную форму. К моему удивлению, больше проблем переместило новую простую форму. Методом проб и ошибок я обнаружил, что просто редактирование новой простой формы Autoexec устранит проблему, но появится случайным образом через несколько месяцев ВСЕГДА после того, как я внес изменения в программирование в другом месте. Иногда вместо ошибки "файл не найден", я получаю только сбой доступа - но решение остается той же самой процедурой - сделать небольшое редактирование файла autoexec (просто добавьте новую пустую строку). Мой проект прошел через много версий доступа (2000 → 2010). Если бы был какой-то способ автоматизировать редактирование моей формы autoexec, то перезапустить доступ - это могло бы стать обходным решением. Я не нашел никакого способа еще.