Практические занятия для опытных пользователей. Обработка ошибок макроса

Обработка ошибок макроса

В макросах вы сталкиваетесь с двумя типами ошибок. Во-первых, существуют ошибки, которые сделаны в процессе создания макроса. С помощью пошаговой отладки вы мо­жете локализовать их и исправить. Во-вторых, есть ошибки, которые возникают, когда макрос применяется в неверном контексте. Возможно, нужных вам данных нет в теку­щей записи или форма, которую вы пытаетесь использовать, не открыта. Устранить та­кого сорта ошибки не удастся с помощью изменения макроса, но можно сообщить про­грамме Access, как поступать с ними.

Обычно Access прерывает выполнение макроса при возникновении ошибки. Если вы хотите применить другой подход, начните ваш макрос с макрокоманды ПриОшибке(OnError). Команда ПриОшибкевыбирает в зависимости от значения аргумента Пе­рейти(GoTo) один из трех вариантов обработки ошибок. Задайте его значение равным Сбой (Fail) для реализации стандартного поведения. Задайте в этом аргументе значение Далее (Next), и программа Access пропустит вызывающую сбой макрокоманду и выпол­нит следующую команду из списка.

Если же задать в аргументе значение Имя макроса (Macro Name), Access будет переме­щаться к концу списка, пока не найдет заданный макрос. (С помощью значения Имя макроса вы сообщаете программе, к какому макросу перейти.) Как действует задание имен макросов в аргументе, вы узнаете в разд. "Группы макросов" далее в этой главе.

ПриОшибке(OnError) — необычная макрокоманда, поскольку она воздействует на весь остальной макрос (или, по крайней мере, до тех пор, пока не встретится еще одна макро­команда ПриОшибке).В длинном сложном макросе макрокоманда ПриОшибкеможет вызываться несколько раз. Но применяйте варианты обработки ошибок с осторож­ностью, чтобы не вызвать дополнительные проблемы. Во многих макросах одна макро­команда зависит от другой, поэтому лучше всего прервать его выполнение при первом же сигнале тревоги.

Макросы и безопасность

В последние годы сотрудники корпорации Microsoft помешаны на безопасности. Они стали более требовательны к программам пакета Office, таким как Access, стремясь нейтрализо­вать разработчиков злонамеренных вирусов. И хотя эти изменения сделали программу Ac­cess безопаснее, они же стали помехой при использовании определенных типов макросов.

Опасные макрокоманды

Программа Access различает два типа макросов: те, которые всегда безвредны, независимо от метода их использования, и те, в которых есть возможность злоупотреблений. Макро­команда ОткрытьТаблицубезопасна. Она может открыть таблицу, которую вы совсем не хотите видеть, но не может нанести реальный вред. С другой стороны, макрос Печать(PrintOut) не столь невинен. Злоумышленник может отправить на принтер 400 копий ва­ших данных с кеглем шрифта 80 пунктов. Аналогичным образом УдалитьОбъект(DeleteObject) может привести к реальному хаосу в вашей БД и команда ЗапускПриложе-ния(RunApp), безусловно, опасна — она может запустить новейшее шпионское программ­ное обеспечение или установить компьютерный вирус.

В окне создания макроса в раскрывающемся списке приведены только стопроцентно безвредные макрокоманды. Их называют безопасными макрокомандами. Конечно, сущест­вуют серьезные причины применения потенциально опасных макросов. Возможно, вам дей­ствительно нужно напечатать отчет, удалить объект или выполнить другую программу. В этом случае вы вынуждены применять потенциально опасные макрокоманды — команды, которым программа Access не доверяет безоговорочно.

Примечание

До тех пор пока вы один управляете вашей БД, вы знаете, что она не содержит стороннего ко­да и злоупотреблений. В этом случае нет серьезных причин отказываться от применения по­тенциально опасных макрокоманд. Но если кто-то послал вам БД по электронной почте или вы загрузили БД из Web, возможно, уверенности у вас поубавится. По этой причине программа Access автоматически блокирует небезопасные макросы в БД до тех пор, пока вы не зададите ей что-то другое. Вы узнаете больше об этом механизме в следующем разделе.

Для того чтобы увидеть полный список макрокоманд, включая те, которые программа Access считает опасными, создайте новый макрос (или откройте уже имеющийся) ивыберите

на ленте Работа с макросами | Конструктор→Показать или скрыть→Показать все действия(Macro Tools | Design → Show/Hide → Show All Actions). Теперь раскрывающийся список макрокоманд содержит несколько больше возможных вариантов. Когда во время создания макроса выбирается опасная макрокоманда, Access дает вам знать об этом с по­мощью предупреждающей пиктограммы (рис. 15.8).

Практические занятия для опытных пользователей. Обработка ошибок макроса - student2.ru

Рис. 15.8.Восклицательный знак в треугольнике выделяет макрокоманды, которые программа Access может отказаться выполнять. В данном примере макрокоманда Печатьможет вызвать проблемы

Примечание

У программы Access нет представления о том, какие макрокоманды более, а какие менее опасны. Она просто делит их на безопасные и опасные.

Наши рекомендации