Как я могу избавиться от постоянного объекта формы VBA, который не поддерживает удаление формы?

У меня есть база данных MS Access 2003, которую я использую для разработки простого небольшого инвентарного приложения. Попутно я добавил несколько посторонних форм и хотел вывести их из БД. Я удалил большинство из них очень хорошо, но один из них, похоже, оставил свой объект VBA. Все, что находится в объекте, Option Compare Database. Теперь всякий раз, когда я пытаюсь работать с базой данных, я получаю следующую ошибку:

The form name 'Transaction1' is misspelled or refers to a form that doesn't exist.

If the invalid form name is a macro, ...

Усечено для удобства печати.

Да, согласен, формы не существует. Что меня так смущает, так это то, что все другие формы, когда я их удалил, также уничтожили свой объект VBA. Этот, несмотря ни на что, кажется, любит задерживаться, и я не знаю, как от него избавиться.

Как мне от этого избавиться?

Вещи, которые я пробовал:

  • Компакт и Ремонт и БД
  • Создайте новую форму с именем, которое она ожидает, убедитесь, что она устраняет проблему, а затем удалите эту форму.

person Tim Visher    schedule 25.03.2009    source источник


Ответы (6)


Вы можете попробовать переключатель / декомпилировать

  • Сделайте резервную копию вашего mdb
  • Откройте свой mdb (удерживайте нажатой клавишу SHIFT, чтобы остановить выполнение любого кода) с помощью ярлыка: msaccess.exe database.mdb / decompile
  • Откройте модуль и скомпилируйте приложение
  • Сохранить и закрыть доступ
  • Снова открыть (снова SHIFT) без декомпиляции
  • Сжать и восстановить базу данных
  • закрыть доступ
person DJ.    schedule 25.03.2009
comment
Декомпилировать - лучшее предложение, +1, но лучше всего закрыть экземпляр Access, открытый с переключателем / decompile после открытия MDB, а затем открыть его в новом экземпляре (с помощью клавиши SHIFT), компактно, затем скомпилируйте, а затем снова сожмите (каждый раз с клавишей SHIFT). - person David-W-Fenton; 26.03.2009
comment
Я всегда компилирую, закрываю, затем снова открываю и сжимаю. Я всегда ненавижу закрывать доступ в некомпилированном состоянии. - person DJ.; 26.03.2009

У меня была аналогичная проблема. Я обнаружил, что назвал отсутствующую форму в меню ЗАПУСК в качестве формы по умолчанию, которая открывается при запуске Access. Я открыл «Инструменты»> «Автозагрузка» и удалил отсутствующее имя формы из поля «Отображение / Форма / Страница» при запуске. Моя проблема решена.

person Robbo    schedule 13.01.2011

Проблема, с которой я столкнулся, заключалась в том, что форма была названа ~ TMPCLP8151 и не отображалась в Access, что бы я ни пробовал, но я мог видеть ее в VBA в Project Explorer. Вот как я решил проблему. Я создал новую форму и создал процедуру события для Form_Open, которая содержала это: DoCmd.DeleteObject acForm, "~ TMPCLP8151"

Затем я просто открыл форму, и, конечно же, код VB удалил форму, которую я не мог удалить сам.

person Dan    schedule 09.05.2012

У меня была такая же проблема. Я создал форму с таким же именем и снова удалил ее. Это устранило проблему. Пытаться. Кстати, попробуйте открыть новую форму в режиме разработки, чтобы убедиться, что модуль VBA связан с новой формой.

person THEn    schedule 25.03.2009

Для достижения цели мне пришлось совместить оба решения. Сначала де- и перекомпилируйте следующий компакт и исправьте, затем создайте новую форму с тем же именем и удалите ее. Обратите внимание, что форма имеет статус Hasmodule, установленный на Да.

person Community    schedule 06.04.2009
comment
Это следует переместить в комментарий к ответу ди-джея. - person Tim Visher; 19.02.2010

У меня была такая проблема. Я переименовал свою форму по умолчанию из Form Login в frmLogin, что соответствует моему стилю именования, но программа все еще искала ее при открытии. Я использую 2013, поэтому я пошел в Файл »Параметры» CurrentDB и в раскрывающемся меню выберите новое имя. Старое имя остается в списке, пока вы не закроете и не перезапустите приложение.

person Rollin Shultz    schedule 28.10.2014