Общие сведения о программировании в Access

Применяется к
Access для Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

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

В этой статье

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

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

Примечание

Многие программы Microsoft Office используют термин "макрос" для обозначения VBA кода. Это может смутить пользователей 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 кодом, даже если вы назначили форму запуска в диалоговом окне Параметры доступа и подключили макрос или VBA код к этой форме OnOpen или OnLoad событию.

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

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

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

  • Используйте встроенные функции или создайте собственные. Access включает в себя множество встроенных функций, таких как IPmt, которая вычисляет выплату процентов. Эти функции можно использовать для выполнения вычислений без создания сложных выражений. С помощью VBAможно также создавать собственные функции для выполнения вычислений, выходящих за рамки возможностей выражения, или для замены сложных выражений. Кроме того, созданные функции можно включать в выражения, что позволяет выполнять часто используемые операции с разными объектами.
  • Создание объектов или управление ими. В большинстве случаев проще всего создать и изменить объект в представлении конструктора этого объекта. Однако в некоторых ситуациях может потребоваться управлять определением объекта в коде. С помощью VBAможно управлять всеми объектами в базе данных, а также самой базой данных.
  • Выполнение действий на уровне системы. Вы можете выполнить RunApp действие в макросе, чтобы запустить другую программу, например Microsoft Excel, из Access, но вы не можете использовать макрос для выполнения других действий за пределами Access. С помощью VBAможно проверка, существует ли файл на компьютере, использовать автоматизацию или динамический обмен данными (DDE) для взаимодействия с другими программами Microsoft Windows, такими как Excel, и вызывать функции в библиотеках динамической компоновки Windows (DLLs).
  • Управлять записями по одной за раз. Можно использовать для VBA пошагового выполнения набора записей по одной записи за раз и выполнения операции с каждой записью. Напротив, макросы одновременно работают с целыми наборами записей.

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

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

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

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

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

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

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

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

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

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

  8. Нажмите кнопку Готово. Кнопка будет размещена в форме.

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

    1. Если страница свойств еще не отображается, нажмите клавишу F4 , чтобы отобразить ее.

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

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

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

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

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

Макросы

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

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

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

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

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

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

Код VBA

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

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

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

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

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

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

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

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

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

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

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

    1. Пока форма или отчет по-прежнему открыты в режиме конструктора, если лист свойств еще не отображается, нажмите клавишу F4 , чтобы отобразить его.

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

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

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

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

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

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

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

    1. В редакторе Visual Basic, если область Project Explorer (Окно проекта) не отображается, в меню View (Вид) выберите пункт Project Explorer.
    2. Разверните дерево под именем базы данных, в которой вы работаете.
    3. В разделе Модули дважды щелкните Converted Macro-<macro name> модуль. Модуль откроется в редакторе Visual Basic.

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

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

  1. В редакторе Visual Basic посмотрите, как называется функция. Например, если вы преобразовали макрос с именем MyMacro, имя функции будет иметь значение MyMacro().
  2. Закройте редактор Visual Basic.
  3. В области навигации щелкните правой кнопкой мыши форму или отчет, с которыми требуется связать функцию, и выберите пункт Конструктор.
  4. Щелкните элемент управления или раздел, с которым вы хотите связать функцию.
  5. Если страница свойств еще не отображается, нажмите клавишу F4 , чтобы отобразить ее.
  6. В окне свойств на вкладке События щелкните поле свойства события, с которым нужно связать функцию.
  7. В поле свойства введите знак равенства (=), за которым следует имя функции, например =MyMacro(). Не забудьте ввести скобки.
  8. Сохраните форму или отчет, нажав на панели быстрого доступа кнопку Сохранить.
  9. В области навигации дважды щелкните форму или отчет и проверьте, правильно ли работает код.

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

См. также

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

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

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

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

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

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