Applies ToAccess для Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

Создавая базу данных, вы обычно начинаете с создания нескольких объектов базы данных, таких как таблицы, формы и отчеты. Рано или поздно наступает момент, когда нужно добавить программный код, чтобы автоматизировать определенные процессы и связать объекты базы данных друг с другом. Эта статья поможет вам сориентироваться на средства программирования в Access.

В этой статье

Программирование

В Access программирование — это процесс добавления функциональных возможностей в базу данных с помощью макросов Access или кода Visual Basic для приложений (VBA). Например, предположим, что вы создали форму и отчет и хотите добавить в форму кнопку команды, которая при нажатии открывает отчет. В этом случае программирование — это процесс создания макроса или процедуры VBA, а затем задания свойства события OnClick кнопки команды, чтобы при нажатии кнопки команды запускалось макрос или процедура. Для простой операции, например открытия отчета, можно использовать мастер кнопок команд, чтобы выполнить всю работу, или вы можете отключить мастер и выполнить программирование самостоятельно.

Примечание: Во многих программах Microsoft Office термин "макрос" относится к коду VBA. Это может сбить с толку Access пользователей, так как в Access термин "макрос" относится к именованной коллекции макрокоманды, которую можно собрать с помощью построителя макросов. Access макрокоманды представляют только подмножество команд, доступных в VBA. Конструктор макросов обладает более структурированным интерфейсом, чем редактор Visual Basic, что позволяет добавлять программный код к элементам управления и объектам без необходимости изучать код VBA. Следует помнить, что в статьях справки Access макросы Access называются макросами. С другой стороны, код VBA может называться VBA, кодом, функцией или процедурой. Код VBA содержится в модулях классов (это части отдельных форм и отчетов, обычно содержащие код только для этих объектов), а также в модулях (они не привязаны к определенным объектам и обычно содержат "глобальный" код, который можно использовать во всей базе данных).

Объекты, например формы и отчеты, и элементы управления, такие как кнопки и текстовые поля, обладают разными свойствами событий, к которым можно прикреплять макросы или процедуры. Каждое свойство события связано с определенным событием, например со щелчком мышью, открытием формы или изменением данных в текстовом поле. События также могут активироваться факторами за пределами Access, такими как системные события, макросы или процедуры, присоединенные к другим событиям. Если добавить много макросов или процедур к нескольким свойствам событий для большого числа объектов, база данных может получиться сложной, но в большинстве случаев для достижения нужных результатов потребуются минимальные усилия по программированию.

К началу страницы

Выбор в пользу макросов или кода VBA

Решение в пользу макросов, кода VBA или обоих методов зависит главным образом от того, как вы планируете развертывать и распространять базу данных. Например, если база данных хранится на вашем компьютере, вы единственный пользователь и хорошо разбираетесь в коде VBA, целесообразно использовать VBA для большинства задач по программированию. Если же вы собираетесь поделиться базой данных с другими людьми, разместив ее на файловом сервере, возможно, лучше обойтись без VBA из соображений безопасности.

Принимая решение об использовании макросов или кода VBA, вы должны учесть два аспекта: безопасность и необходимую функциональность. Безопасности следует уделить особое внимание, так как VBA можно использовать для создания кода, который способен нарушить защиту данных или повредить файлы на локальном компьютере. Если вы используете базу данных, созданную не вами, не включайте код VBA, если не уверены в том, что база данных получена из надежного источника. Создавая базу данных, предназначенную для других людей, не используйте средства программирования, которые могут привести к тому, что пользователям потребуется явно предоставить ей статус надежной. Чтобы избежать такой ситуации, воспользуйтесь распространенными приемами, описанными ниже в этом разделе.

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

Рекомендации по использованию макросов

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

Макросы предоставляют простой способ обработки многих задач программирования, таких как открытие и закрытие форм и выполнение отчетов. Вы можете быстро и легко связать объекты базы данных (формы, отчеты и т. д.), которые вы создали, так как необходимо запомнить мало синтаксиса. Аргументы для каждого действия отображаются в построителе макросов.

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

  • Назначение действия или набора действий ключу. Для этого необходимо создать группу макросов с именем AutoKeys.

  • Выполнение действия или последовательности действий при первом открытии базы данных. Для этого необходимо создать макрос с именем AutoExec.

    Примечание:  Макрос AutoExec запускается раньше, чем любой другой макрос или код VBA, даже если вы назначили в диалоговом окне Параметры Access начальную форму и прикрепили к ее событию OnOpen или OnLoad макрос или код VBA.

Дополнительные сведения о создании макросов см. в разделе Макросы.

Рекомендации по использованию VBA

Программный код VBA следует использовать вместо макросов, если вы хотите сделать следующее:

  • Используйте встроенные функции или создайте собственные функции,    Access включает в себя множество встроенных функций, таких как функция IPmt , которая вычисляет выплату процентов. С помощью этих встроенных функций можно выполнять вычисления, не создавая сложных выражений. Используя код VBA, вы также можете создать собственные функции для выполнения вычислений, которые требуют создания слишком сложных выражений или не могут быть выполнены с их помощью. Кроме того, созданные функции можно включать в выражения, что позволяет выполнять часто используемые операции с разными объектами.

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

  • Выполнять действия на уровне системы.    Вы можете выполнить действие RunApp в макросе, чтобы запустить другую программу (например, Microsoft Excel) из Access, но нельзя использовать макрос для выполнения других действий за пределами Access. С помощью VBA можно проверить, существует ли на компьютере определенный файл, воспользоваться технологией Automation или DDE для взаимодействия с другими программами для Microsoft Windows, такими как Excel, и вызвать функции из библиотек DLL в Windows.

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

К началу страницы

Выполнение распространенных задач программирования с помощью мастера кнопок

Добавьте в форму кнопку, и мастер кнопок поможет вам приступить к программированию. С помощью мастера вы сможете создать кнопку для выполнения определенной задачи. В файле Access (ACCDB) мастер создает макрос, внедренный в свойство OnClick командной кнопки. В MDB- или ADP-файле мастер создает код VBA, так как в этих форматах не поддерживаются внедренные макросы. В любом случае вы можете затем изменить или дополнить макрос или код VBA в соответствии со своими потребностями.

  1. В области навигации щелкните правой кнопкой мыши форму, в которую нужно добавить кнопку, и выберите пункт Конструктор.

  2. На вкладке Конструктор формы щелкните стрелку вниз, чтобы отобразить коллекцию Элементов управления , а затем убедитесь, что выбран параметр Использовать мастеры управления .

  3. На вкладке Конструктор формы в коллекции Элементы управления нажмите кнопку Кнопка.

  4. На бланке формы щелкните там, где нужно поместить кнопку.

    Откроется мастер кнопок.

  5. На первой странице мастера в списке Категории щелкните каждую категорию, чтобы посмотреть, какие действия можно запрограммировать для кнопки. В списке Действия выберите нужное действие, а затем нажмите кнопку Далее.

  6. Выберите параметр Текст или Рисунок в зависимости от того, что нужно отобразить на кнопке.

    • Если вы хотите отобразить текст, то можете изменить содержимое поля рядом с параметром Текст.

    • Если вам нужен рисунок, мастер предложит изображение в соответствующем списке. Если вы хотите выбрать другое изображение, установите флажок Показать все рисунки , чтобы отобразить список всех рисунков, которые Access предоставляет, или нажмите кнопку Обзор , чтобы выбрать рисунок, хранящийся в другом месте.

      Нажмите кнопку Далее.

  7. Введите понятное имя для кнопки. Это необязательный шаг, и это имя не отображается на кнопке. Тем не менее рекомендуем указать понятное имя, чтобы было легко отличить эту кнопку от других позже (например, при настройке последовательности табуляции для элементов управления формы). Например, если кнопка закрывает форму, можно назвать ее cmdClose или CommandClose.

  8. Нажмите кнопку Готово.

    Access помещает кнопку команды в форму.

  9. Если вы хотите просмотреть программный код, созданный мастером, можно сделать следующее:

    1. Если окно свойств не отображается, нажмите клавишу F4.

    2. В окне свойств откройте вкладку События.

    3. В поле Свойства On Click (Щелкнуть ) нажмите кнопку Сборка Изображение кнопки.

      Access запускает построитель макросов и отображает макрос, созданный мастером. При желании макрос можно изменить (дополнительные сведения о редактировании макросов см. в разделе Макросы). По завершении на вкладке Конструктор макросов в группе Закрыть нажмите кнопку Закрыть , чтобы закрыть построитель макросов. Если Access предлагает сохранить изменения и обновить свойство, нажмите кнопку Да , чтобы сохранить изменения, или Нет , чтобы отклонить изменения.

  10. На вкладке Конструктор формы в группе Представления щелкните Вид, а затем — Представление формы. Нажмите новую кнопку, чтобы проверить, правильно ли она работает.

К началу страницы

Макросы

Макрос — это инструмент, позволяющий автоматизировать задачи и добавлять функции в формы, отчеты и элементы управления. Например, если добавить в форму кнопку, то можно связать ее свойство события OnClick с макросом и включить в него команды, которые должны выполняться при нажатии этой кнопки.

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

Создать макрос можно с помощью конструктора макросов, который показан на этом рисунке:

Конструктор макросов Access 2010

Вот как можно открыть конструктор макросов:

  • на вкладке Создание в группе Макросы и код нажмите кнопку Макрос.

К началу страницы

Код VBA

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

Чтобы быстро приступить к программированию на VBA, сначала создайте макрос Access, а затем преобразуйте его в код VBA. Инструкции см. в разделе Преобразование макросов в код VBA. В этом случае будет создан модуль VBA, который выполняет те же операции, которые определены в макросе. Кроме того, откроется редактор Visual Basic, так что вы сможете приступить к редактированию процедуры. При работе в редакторе Visual Basic можно щелкнуть ключевые слова и нажать клавишу F1, чтобы начать Access справку разработчика и узнать больше о каждом ключевом слове. Затем вы можете просмотреть справку разработчика Access и найти новые команды, которые помогут вам выполнить нужные задачи программирования.

К началу страницы

Преобразование макросов в код VBA

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

Преобразование макросов, прикрепленных к форме или отчету

Этот процесс преобразует в VBA все макросы, на которые ссылается форма, отчет или любой из их элементов управления (либо которые внедрены в форму, отчет или элемент управления), а затем добавляет код VBA в модуль класса формы или отчета. Модуль класса становится частью формы или отчета и сохраняется при их перемещении или копировании.

  1. В области навигации щелкните форму или отчет правой кнопкой мыши и выберите пункт Конструктор.

  2. На вкладке Конструктор формы в группе Сервис выберите команду Преобразовать макросы формы в Visual Basic или Преобразовать макросы отчета в Visual Basic.

  3. В диалоговом окне Преобразование макросов формы или Преобразование макросов отчета укажите, нужно ли Access добавлять код обработки ошибок в функции, которые он создает. Кроме того, если в макросах есть комментарии, укажите, нужно ли добавлять их в функции. Нажмите кнопку Преобразовать.

    Если для формы или отчета не существует модуля класса, Access создает его и добавляет процедуру в модуль для каждого макроса, связанного с формой или отчетом. Access также изменяет свойства событий формы или отчета, чтобы они запускали новые процедуры VBA вместо макросов.

  4. Чтобы просмотреть и изменить код VBA, сделайте следующее:

    1. Форма или отчет должны быть по-прежнему открыты в режиме конструктора. Если окно свойств не отображается, нажмите клавишу F4.

    2. На вкладке Событие на странице свойств щелкните любое поле свойства, в котором отображается [Процедура события], а затем нажмите кнопку сборки Изображение кнопки. Чтобы просмотреть свойства событий для определенного элемента управления, щелкните его, чтобы выбрать. Чтобы просмотреть свойства событий для всей формы или отчета, в верхней части окна свойств выберите в раскрывающемся списке пункт Форма или Отчет.

      Access открывает редактор Visual Basic и отображает процедуру события в модуле класса. Чтобы просмотреть другие процедуры, которые хранятся в этом модуле класса, прокрутите содержимое вверх или вниз.

Преобразование глобальных макросов

  1. В области навигации щелкните правой кнопкой мыши макрос, который нужно преобразовать, и выберите пункт Конструктор.

  2. На вкладке Конструктор макросов в группе Сервис щелкните Преобразовать макросы в Visual Basic.

  3. В диалоговом окне Преобразование макроса установите нужные флажки и нажмите кнопку Преобразовать.

    Access преобразует макрос и открывает редактор Visual Basic.

  4. Чтобы просмотреть и изменить код VBA, сделайте следующее:

    1. В редакторе Visual Basic, если область Project Explorer (Окно проекта) не отображается, в меню View (Вид) выберите пункт Project Explorer.

    2. Разверните дерево под именем базы данных, в которой вы работаете.

    3. В разделе Модули дважды щелкните модуль Преобразованный макрос — <имя макроса>.

      Модуль откроется в редакторе Visual Basic.

Прикрепление функции VBA к свойству события

При преобразовании глобального макроса в VBA код VBA помещается в стандартный модуль. В отличие от модуля класса, стандартный модуль не является частью формы или отчета. Скорее всего, вам потребуется связать функцию со свойством события в форме, отчете или элементе управления, чтобы код выполнялось точно в нужное время и в нужном месте. Для этого можно либо скопировать код VBA в модуль класса, а затем связать его со свойством события, либо выполнить специальный вызов из свойства события в стандартный модуль с помощью следующей процедуры.

  1. В редакторе Visual Basic посмотрите, как называется функция. Например, если преобразовать макрос с именем MyMacro, функции будет присвоено имя MyMacro().

  2. Закройте редактор Visual Basic.

  3. В области навигации щелкните правой кнопкой мыши форму или отчет, который нужно связать с функцией, и выберите в контекстном меню пункт Конструктор.

  4. Щелкните элемент управления или раздел, с которым вы хотите связать функцию.

  5. Если окно свойств не отображается, нажмите клавишу F4.

  6. В окне свойств на вкладке События щелкните поле свойства события, с которым нужно связать функцию.

  7. В поле свойства введите знак равенства (=), а затем — имя функции (например, =MyMacro(). Не забудьте ввести скобки.

  8. Сохраните форму или отчет, нажав на панели быстрого доступа кнопку Сохранить.

  9. В области навигации дважды щелкните форму или отчет и проверьте, правильно ли работает код.

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

См. также

Создание макроса пользовательского интерфейса

Запуск макросов Access с помощью сочетаний клавиш

Автоматизация событий при запуске с помощью макроса

Создание макроса, который запускается при открытии базы данных

Порядок событий в объектах базы данных

К началу страницы

Нужна дополнительная помощь?

Нужны дополнительные параметры?

Изучите преимущества подписки, просмотрите учебные курсы, узнайте, как защитить свое устройство и т. д.

В сообществах можно задавать вопросы и отвечать на них, отправлять отзывы и консультироваться с экспертами разных профилей.