У меня есть проект MS Access, который был разработан в MS Access 97. Я успешно преобразовал его в MS Access 2016 (хотя это была длинная история). Все выглядит нормально, но я заметил очень странное поведение.
Когда пользователь впервые открывает файл проекта в клиентском режиме, появляется множество ошибок макросов. Это нормально, потому что пользователь еще не разрешил небезопасное содержимое в этом файле. Итак, после того, как пользователь закрыл все ошибки, он нажимает кнопку «Разрешить небезопасное содержимое» и закрывает файл. Теперь пользователь снова открывает проект, и он не работает должным образом. Вызываются некоторые формы, которые не должны вызываться, и появляется ошибка «Модуль не найден». Никаких модулей для этой программы я не разрабатывал. Таким образом, это означает, что если пользователь открывает файл, не допустив сначала небезопасный контент, проект полностью испортится, и его невозможно будет восстановить, если вы не замените файл новой копией.
Однако, если у пользователя есть свежая копия файла проекта .accdb, и файл находится в надежном месте, все работает нормально. Еще один способ заставить проект работать правильно, не помещая его в надежное место, — открыть его, удерживая клавишу Shift и нажав кнопку «Разрешить небезопасный контент». Затем пользователь может нормально запустить файл двойным щелчком, и он работает так, как должен.
Таким образом, открытие этого файла без доступа к небезопасному содержимому сначала нарушит работу проекта. Я также пытался открыть код VBA формы, которая вызывается по умолчанию, и окна кода VBA выглядят замороженными. Другие формы работают нормально.
Как я могу отладить эту проблему?
UPD: действительно похоже, что проблема вызвана попыткой запуска макросов, когда небезопасное содержимое не включено.
UPD: Я заметил еще одну вещь - если я запускаю проект, не разрешая сначала небезопасный контент, но не нажимаю "разрешить контент", а просто закрываю программу - я все еще могу запустить это из надежного места. Таким образом, повреждение происходит только после того, как я нажму кнопку «включить контент». В моей форме есть макрос с прикрепленным действием OnClose. Но пробовал удалять все макросы из этой формы и не помогло.
OnOpen
,OnCurrent
,OnLoad
иOnClose
(и, возможно, больше, что я упустил) для любой формы/подформы, которая может быть активирована, для устранения неполадок. - person SunKnight0   schedule 12.01.2017