Общие сведения о программировании в 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 термин "макрос" обозначает именованную коллекцию макрокоманд, собираемых с помощью конструктора макросов. Действия макросов Access представляют собой только часть команд, доступных в VBA. Конструктор макросов предоставляет более структурированный интерфейс, чем редактор Visual Basic, поэтому вы можете добавлять программирование к элементам управления и объектам без изучения VBA кода. В статьях справки Access макросы Access называются макросами. VBA Код называется VBA кодом, функцией или процедурой. VBA Код хранится в модулях классов, которые являются частью отдельных форм или отчетов и обычно содержат код только для этих объектов, или в модулях, которые не привязаны к конкретным объектам и обычно содержат глобальный код, который можно использовать во всей базе данных.

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

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

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

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

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

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

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

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

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

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

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

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

    Примечание

    Этот AutoExec макрос выполняется раньше всех остальных макросов или VBA кода, даже если в диалоговом окне "Параметры Access" выбрана форма запуска и к ней OnOpenOnLoad прикреплен макрос или VBA код.

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

Рекомендации по использованию 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. В поле свойства По щелчку нажмите кнопку Построить .

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

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

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

Макросы

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

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

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

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

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

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

Код 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 изменяет свойства событий формы или отчета, чтобы вместо макросов выполнялись новые 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 к свойству события

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

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

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

См. также

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

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

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

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

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

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