Процесс записи макроса в ms access идентичен процессу записи макроса в ms excel

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

Примечание: Эта статья не относится к веб-приложениям Access.

В этой статье

  • Обзор

  • Построитель макросов

  • Создание автономного макроса

  • Создание внедренного макроса

  • Добавление макрокоманд в макрос

  • Управление выполнением программы с помощью операторов «Если», «Иначе если» и «Иначе»

  • Создание вложенных макросов

  • Группировка связанных действий

  • Развертывание и свертывание макрокоманд и блоков

  • Копирование и вставка макрокоманд

  • Предоставление общего доступа к макросу

  • Запуск макроса

  • Отладка макроса

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

Общие сведения

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

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

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

Построитель макросов

Вот некоторые основные возможности конструктора макроса.

  • Каталог действий    Макро макрос у систематизованы по типу и с помощью поиска.

  • IntelliSense.    При вводе выражений IntelliSense предлагает возможные значения и позволяет выбрать правильное значение.

  • Сочетания клавиш    Используйте сочетания клавиш, чтобы ускорить и упростить написание макроса.

  • Поток программы    Создавайте более понятные макросы с строками прикомментов и группами действий.

  • Условные выписки    Разрешить более сложное выполнение логики с поддержкой вложенных если/Иначе если.

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

  • Простое совместное использование    Скопируйте макрос, а затем вкопируйте его как XML-код в сообщение электронной почты, запись группы новостей, блог или образец кода.

Вот видеоролик, в котором вы сможете иным образом о том, как основные области конструктора макроса.

Браузер не поддерживает видео.

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

Создание автономного макроса

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

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

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

  2. На панели быстрого доступа нажмите кнопку Сохранить.

  3. В диалоговом окне Сохранение введите имя макроса, а затем нажмите кнопку «ОК».

  4. Перейдите к разделу Добавление макрокоманд в макрос.

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

Создание внедренного макроса

Данная процедура позволяет создать макрос, внедренный в свойство события объекта. Такие макросы не отображаются в области навигации, но их можно вызывать их событий, например Загрузка или Нажатие кнопки.

Так как макрос становится частью объекта формы или отчета, внедренные макросы рекомендуется использовать для автоматизации задач, которые относятся к конкретной форме или отчету.

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

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

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

  4. В области задач «Страница свойств» откройте вкладку Событие.

  5. Щелкните поле свойства для события, которое должно активировать макрос. Например, если вы хотите, чтобы макрос выполнялся при нажатии кнопки, щелкните поле свойства Нажатие для кнопки.

  6. Если поле свойства содержит слова [Внедренный макрос], это означает, что для этого события уже создан макрос. Вы можете изменить его, выполнив действия, описанные далее в этой процедуре.

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

  8. Нажмите кнопку «Построить» Изображение кнопки.

  9. Если откроется диалоговое окно Построитель, убедитесь, что выбран пункт Макросы, а затем нажмите кнопку ОК.

    Откроется конструктор макросов. Перейдите к следующему разделу, чтобы добавить макрокоманды в макрос.

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

Добавление макрокоманд в макрос

Макрокомандами называются отдельные команды, которые образуют макрос. Имя макрокоманды отражает ее назначение, например НайтиЗапись или ЗакрытьБазуДанных.

Шаг 1. Просмотр или поиск макрокоманд

Чтобы добавить макрокоманду, прежде всего нужно найти ее в раскрывающемся списке Добавить новую макрокоманду или в каталоге макрокоманд.

Примечания: 

  • По умолчанию в раскрывающемся списке Добавить новую макрокоманду и в каталоге макрокоманд выводятся только макрокоманды, которые выполняются в ненадежных базах данных. Чтобы просмотреть все макрокоманды:

    • На вкладке Конструктор в группе Показать или скрыть выберите пункт Показать все действия.

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

Найти макрокоманду можно одним из следующих способов:

  • Щелкните стрелку раскрывающегося списка Добавить новую макрокоманду и прокрутите список вниз, чтобы найти макрокоманду. Сначала выводятся элементы управления выполнением программы, а затем — макрокоманды в алфавитном порядке.

  • Найдите макрокоманду в области «Каталог макрокоманд». Макрокоманды сгруппированы по категориям. Разверните категории для просмотра макрокоманд. При выборе макрокоманды в нижней части каталога выводится ее краткое описание.

  • Выполните поиск макрокоманды, введя текст в поле «Поиск» в верхней части области «Каталог макрокоманд». По мере ввода список макрокоманд фильтруется и в нем выводятся все макросы, которые содержат текст. Access ищет введенный текст в именах макросов и их описаниях.

Шаг 2. Добавление макрокоманды в макрос

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

  • Выберите макрокоманду в списке Добавить новую макрокоманду или просто начните вводить имя макрокоманды в поле. Access добавит макрокоманду туда, где отображался список Добавить новую макрокоманду.

  • Перетащите макрокоманду из каталога макрокоманд в область макроса. Появится полоса вставки, показывающая, куда будет вставлена макрокоманда, когда вы отпустите кнопку мыши.

  • Дважды щелкните макрокоманду в каталоге макрокоманд.

    • Если в области макроса выбрана макрокоманда, Access добавит новую макрокоманду под выбранной.

    • Если в области макроса выделен блок Группа, Если, Иначе если, Иначе или Вложенный макрос, Access добавит новую макрокоманду в него.

    • Если в области макроса не выбраны макрокоманды и блоки, Access добавит новую макрокоманду в конец макроса.

      Примечания: 

      • Если вы уже создали один или несколько макросов, они указаны в узле В этой базе данных каталога макрокоманд.

        • При перетаскивании автономного макроса (который указан в разделе Макросы) в область макроса создается макрокоманда ЗапускМакроса, которая выполняет перетащенный макрос. Затем вы можете с помощью раскрывающегося списка вызвать вложенные макросы, если они имеются.

        • Если вы хотите просто скопировать макрокоманды из автономного макроса в текущий (вместо того чтобы создавать макрокоманду ЗапускМакроса), щелкните его правой кнопкой мыши в каталоге макрокоманд и выберите команду Добавить копию макроса.

        • При перетаскивании внедренного макроса (указанного в объекте формы или отчета) в область макроса макрокоманды из него копируются в текущий макрос.

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

Шаг 3. Ввод аргументов

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

Ввод выражения с помощью функции IntelliSense

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

Дополнительные сведения о создании выражений см. в статье Введение в использование выражений.

Сведения об использовании IntelliSense со свойствами веб-базы данных

При создании макроса пользовательского интерфейса, внедренного в веб-совместимую форму, IntelliSense позволяет добавлять любые свойства формы в выражение. Однако в веб-базе данных с помощью макросов пользовательского интерфейса можно получать доступ только к некоторым свойствам формы. Например, если в форме «Форма1» есть элемент управления «Элемент1», IntelliSense позволит добавить [Формы]![Форма1]![Элемент1].[ControlSource] в выражение в макросе пользовательского интерфейса. Но если опубликовать базу данных в службах Access, макрос, содержащий выражение, будет вызывать ошибку при запуске на сервере.

В таблице ниже перечислены свойства, которые вы можете использовать в макросах пользовательского интерфейса в веб-базах данных:

Объект или элемент управления

Доступные свойства

Форма

Caption, Dirty, AllowAdditions, AllowDeletions, AllowEdits

Набор вкладок

Visible

Надпись

Caption, Visible, «Цвет текста», «Цвет фона»

Вложение

Visible, Enabled

Кнопка

Caption, Visible, Enabled, «Цвет текста»

Текстовое поле

Enabled, Visible, Locked, «Цвет текста», «Цвет фона», Value

Флажок

Enabled, Visible, Locked, Value

Изображение

Visible, «Цвет фона»

Поле со списком

Enabled, Visible, Locked, Value

Список

Enabled, Visible, Locked, Value

Веб-браузер

Visible

Подчиненная форма

Enabled, Visible, Locked

Элемент навигации

Enabled, Visible

Перемещение макрокоманды

Макрокоманды выполняются в том порядке, в котором они указаны в макросе (сверху вниз). Чтобы переместить макрокоманду в макросе вверх или вниз, воспользуйтесь одним из следующих способов:

  • Перетащите макрокоманду вверх или вниз в нужное место.

  • Выберите макрокоманду, а затем нажмите клавиши CTRL+СТРЕЛКА ВВЕРХ или CTRL+СТРЕЛКА ВНИЗ.

  • Выберите макрокоманду и щелкните стрелку Вверх или Вниз в правой части области макроса.

Удаление макрокоманды

Чтобы удалить макрокоманду:

  • Выделите макрокоманду и нажмите клавишу DELETE. Кроме того, вы можете нажать кнопку Удалить (X) в правой части области макроса.

    Примечания: 

    • Если удалить блок макрокоманд, например блок Если или Группа, будут также удалены все макрокоманды в блоке.

    • Команды Вверх, Вниз и Удалить также доступны в контекстном меню, которое появляется при щелчке макрокоманды правой кнопкой мыши.

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

Управление выполнением программы с помощью операторов «Если», «Иначе если» и «Иначе»

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

На следующем рисунке показан простой блок Если, включающий блоки Иначе если и Иначе:

Макрос с блоком Если/Иначе.

Блок Если выполняется, если дата в поле ExpirationDate меньше текущей даты.

Блок Иначе если выполняется, если дата в поле ExpirationDate равна текущей дате.

Блок Иначе выполняется, если ни один из предыдущих блоков не выполнился.

На этом блок Если заканчивается.

Добавление блока «Если» в макрос

  1. Выберите оператор Если в раскрывающемся списке Добавить новую макрокоманду или перетащите его из области «Каталог макрокоманд» в область макроса.

  2. В поле в верхней части блока Если введите выражение, определяющее, когда будет выполняться блок. Выражение должно быть логическим (то есть его результатом должно быть значение «Да» или «Нет»).

  3. Добавьте макрокоманды в блок Если, выбрав их из раскрывающегося списка Добавить новую макрокоманду в блоке или перетащив их из области «Каталог макрокоманд» в блок Если.

Добавление блоков «Иначе» и «Иначе если» в блок «Если»

  1. Выберите блок
    Если

    и в его правом нижнем углу щелкните
    Добавить блок «Иначе» или Добавить блок «Иначе если».

  2. Если вы добавляете блок Иначе если, введите выражение, определяющее, когда будет выполняться блок. Выражение должно быть логическим (то есть его результатом должно быть значение «Истина» или «Ложь»).

  3. Добавьте макрокоманды в блок Иначе если или Иначе, выбрав их из раскрывающегося списка Добавить новую макрокоманду в блоке или перетащив их из области «Каталог макрокоманд» в блок.

    Примечания: 

    • Команды для добавления блоков Если, Иначе если и Иначе также доступны в контекстном меню, которое появляется при щелчке макрокоманды правой кнопкой мыши.

    • У блоков Если может быть до 10 уровней вложенности.

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

Создание вложенных макросов

У каждого макроса может быть несколько вложенных макросов. Вложенный макрос вызывается по имени из макрокоманд ЗапускМакроса или ПриОшибке.

Блок «Вложить макрос» добавляется в макрос таким же образом, как и макрокомащение, как описано в разделе «Добавление макрокомаграмм в макрос». После добавления блока «Вложить макрос» вы можете перетащить в него макрокогруппы или выбрать их из списка «Добавить новую макрокомаграмму», который отображается в блоке.

Примечания: 

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

  • Вложенные макросы всегда должны быть последними блоками в макросе; под ними невозможно добавить никакие макрокоманды (кроме других вложенных макросов). Если запустить макрос, который содержит только вложенные макросы, не указав нужный вложенный макрос, будет выполнен только первый вложенный макрос.

  • Чтобы вызвать вложенный макрос (например, в свойстве события или с помощью макрокоманд ЗапускМакроса и ПриОшибке), используйте следующий синтаксис:

    имя_макроса.имя_вложенного_макроса

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

Группировка связанных макрокоманд

Вы можете сделать макрос более понятным, сгруппировав макрокоманды и присвоив группам продуманные имена. Например, вы можете добавить макрокоманды, открывающие и фильтрующие форму, в группу с именем «Открытие и фильтрация формы». Это позволяет проще понять, какие макрокоманды связаны друг с другом. Блок Группа не влияет на то, как выполняются макрокоманды, и группу невозможно вызвать или запустить по отдельности. Ее основное назначение — присвоение метки группе макрокоманд, которая делает макрос более понятным. Кроме того, при редактировании крупного макроса вы можете свернуть каждый блок группы до одной строки, чтобы меньше использовать прокрутку.

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

  1. Выберите макрокоманды, которые вы хотите сгруппировать.

  2. Щелкните выбранные макрокоманды правой кнопкой мыши и выберите Сделать блок группы.

  3. В поле в верхней части блока Группа введите имя группы.

Если макрокоманды не добавлены:

  1. Перетащите блок Группа из каталога макрокоманд в область макроса.

  2. В поле в верхней части блока Группа введите имя группы.

  3. Перетащите макрокоманды из каталога в блок Группа или выберите их в списке Добавить новую макрокоманду, который выводится в блоке.

Блоки Группа могут содержать другие блоки Группы. Допускается до 9 уровней вложенности.

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

Развертывание и свертывание макрокоманд или блоков

При создании макроса в конструкторе макросов отображаются макрокоманды со всеми аргументами. Если макрос большой, при его редактировании может потребоваться свернуть некоторые или все макрокоманды (и их блоки). Это упрощает просмотр общей структуры макроса. При необходимости вы можете развернуть макрокоманды, чтобы изменить их.

Развертывание или свертывание одной макрокоманды или блока

  • Щелкните знак «плюс» (+) или «минус» () слева от имени макроса или блока. Кроме того, можно выбрать макрокоманду или блок с помощью клавиш СТРЕЛКА ВВЕРХ или СТРЕЛКА ВНИЗ, а затем нажать клавишу СТРЕЛКА ВЛЕВО или СТРЕЛКА ВПРАВО, чтобы свернуть или развернуть их.

Развертывание или свертывание всех макрокоманд (но не блоков)

  • На вкладке Конструктор в группе Развернуть или свернуть щелкните Развернуть макрокоманды или Свернуть макрокоманды.

Развертывание или свертывание всех макрокоманд и блоков

  • На вкладке Конструктор в группе Развернуть или свернуть щелкните Развернуть все или Свернуть все.

Совет:  Вы можете просмотреть свернутую макрокоманду, наведя на нее указатель. В подсказке будут показаны аргументы макрокоманды.

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

Копирование и вставка макрокоманд

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

Совет:  Чтобы быстро продублировать выбранные макрокоманды, удерживайте нажатой клавишу CTRL и перетащите их в то место макроса, куда вы хотите их скопировать.

Предоставление общего доступа к макросу

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

Запуск макроса

Вы можете запустить макрос с помощью следующих способов:

  • Дважды щелкните макрос в области навигации.

  • Вызовите макрос с помощью макрокоманды ЗапускМакроса или ПриОшибке.

  • Введите имя макроса в свойство события объекта. Макрос будет выполняться при активизации события.

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

Отладка макроса

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

Добавление в макрос макрокоманд для обработки ошибок

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

Чтобы добавить вложенный макрос для обработки ошибок:

  1. Откройте макрос в Конструкторе.

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

  3. В поле справа от слова Вложенный макрос введите имя вложенного макроса, например ОбработкаОшибок.

  4. В раскрывающемся списке Добавить новую макрокоманду, который отображается в блоке Вложенный макрос, выберите макрокоманду ОкноСообщения.

  5. В поле Сообщение введите следующий текст: =[MacroError].[Description]

  6. В нижней части макроса выберите ПриОшибке из раскрывающегося списка Добавить новую макрокоманду.

  7. Для аргумента Перейти укажите значение Имя макроса.

  8. В поле Имя макроса введите имя вложенного макроса обработки ошибок (в данном примере — ОбработкаОшибок).

  9. Перетащите макрокоманду ПриОшибке в самую верхнюю часть макроса.

На следующем рисунке показан макрос с макрокомандой ПриОшибке и вложенным макросом ОбработкаОшибок.

Макрос с вложенным макросом для обработки ошибок.

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

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

Использование команды пошагового исполнения

Пошаговое исполнение —это режим отладки макроса, который можно использовать для выполнения макроса по одной макрокоманде за раз. После выполнения каждой макрокоманды выводится диалоговое окно со сведениями о ней и кодами всех возникших ошибок. Но так как в диалоговом окне «Пошаговое исполнение макроса» не выводится описание ошибки, мы рекомендуем использовать метод с вложенными макросами обработки ошибок, описанный в предыдущем разделе.

Чтобы перейти в пошаговый режим:

  1. Откройте макрос в Конструкторе.

  2. На вкладке Конструктор в группе Сервис нажмите кнопку По шагам.

  3. Сохраните и закройте макрос.

При следующем запуске макроса откроется диалоговое окно Пошаговое исполнение макроса. В нем выводятся следующие сведения о каждой макрокоманде:

  • имя макроса;

  • условие (для блоков «Если»);

  • имя макрокоманды;

  • аргументы;

  • номер ошибки (номер 0 означает, что ошибки нет).

При пошаговом исполнении макрокоманд можно использовать следующие три кнопки в диалоговом окне:

  • Чтобы просмотреть сведения о следующей макрокоманде, нажмите кнопку По шагам.

  • Чтобы остановить все макросы, которые выполняются в данный момент, нажмите кнопку Остановить все макросы. Пошаговый режим будет по-прежнему действовать при следующем запуске макроса.

  • Чтобы выйти из пошагового режима и продолжить выполнение макроса, нажмите кнопку Продолжить.

    Примечания: 

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

    • Чтобы перейти в пошаговый режим по время выполнения макроса, нажмите клавиши CTRL+BREAK.

    • Чтобы перейти в пошаговый режим в определенный момент выполнения макроса, добавьте макрокоманду Шаг в соответствующую часть макроса.

    • Пошаговый режим недоступен для веб-баз данных.

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

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

Макрос — это подмножество команд, доступных на языке программирования Visual Basic для приложений (VBA). Если вам требуется больше функций, чем могут предоставлять макросы, вы можете легко преобразовать автономный объект макроса в код VBA, а затем использовать расширенный набор функций VBA. Имейте в виду, что код VBA не будет запускаться в браузере. Любой код VBA, добавленный в веб-базу данных, будет работать только в том случае, если база данных открыта в Access.

Примечание:  Внедренные макросы невозможно преобразовать в код VBA.

Чтобы преобразовать макрос в код VBA:

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

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

  3. В диалоговом окне Преобразование макроса укажите, нужно ли добавлять код обработки ошибок и примечания в модуль VBA, а затем нажмите кнопку Преобразовать.

Access подтвердит, что макрос был преобразован, и откроет редактор Visual Basic. Дважды щелкните преобразованный макрос в области проекта, чтобы просмотреть и изменить модуль.

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

Skip to content

На чтение 2 мин. Просмотров 1.5k.

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

Содержание

  1. Как макрос работает
  2. Код макроса
  3. Как этот код работает
  4. Как использовать

Как макрос работает

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

Для этого откройте VBA в Excel и выберите Tools➜References. Откроется диалоговое окно «References». Прокрутите вниз, пока вы
найдите запись Microsoft Access XX Object Library, где XX — это ваша версия Access. Выберите флажок рядом с записью.

Код макроса

Sub ZapustitMakrosAccessIzExcel()
'Шаг 1: Объявляем переменные
Dim AC As Access.Application
'Шаг 2: Запустите Access и откройте целевую базу данных
Set AC = New Access.Application
AC.OpenCurrentDatabase _
("C:TempYourAccessDatabse.accdb")
'Шаг 3: Откройте целевой отчет и отправьте в Word
With AC
.DoCmd.RunMacro "MyMacro"
.Quit
End With
End Sub

Как этот код работает

  1. Первое, что макрос делает, это объявляет переменную объекта. Эта переменная открывает библиотеку приложений баз данных Access.
  2. Шаг 2 использует переменную, чтобы открыть базу данных Microsoft Access, где находится целевой макрос.
  3. Шаг 3 запускает соответствующий макрос и закрывает базу данных.

Как использовать

Для реализации этого макроса, вы можете скопировать и вставить его в стандартный модуль:

  1. Активируйте редактор Visual Basic, нажав ALT + F11.
  2. Щелкните правой кнопкой мыши имя проекта / рабочей книги в окне проекта.
  3. Выберите Insert➜Module.
  4. Введите или вставьте код.

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

Понятие макроса

БД Access состоят из объектов хранения и обработки значений в таблицах. Одни из таких объектов – макросы Access – программные единицы, использующиеся для внесения изменений в данных базы или пользовательском интерфейсе.

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

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

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

Макрокоманды

Каталог макрокоманд

Для добавления макросов Access в меню «Создание» выбираем пункт «Макрос». Система открывает окно нового макроса со списком доступных для добавления команд справа. Кроме списка макрокоманд, здесь вы найдете макросы, уже доступные в этой БД, и функции управления создания процедуры для выполнения.

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

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

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

Действия по разработке макросов Access выполняют в конструкторе. Команда выбирается из списка и добавляется в окно макроса. Здесь операция раскрывается и запрашивает ввод параметров.

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

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

Работа функции IntelliSence

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

Управление командами в макросе

Макросы событий

Макросы на форму Access добавляют сразу на элемент управления. При создании элемента автоматически открывается мастер, определяющий действия, которые выполняет макрос в ответ на событие со стороны этого элемента. Яркий пример – действия при нажатии на кнопку формы.

В мастере выбираем категорию «Разное» — «Выполнить макрос» и выбираем заранее созданный объект из списка предложенных. Таким образом, программа привязывается к элементу формы и реагирует на событие со стороны этого элемента.

Мастер создания макроса

К уже добавленному на форму элементу управления макрос привязывается в окне свойств. На вкладке «События» обозначен список событий, для которых возможно назначить выполнение последовательности команд. Для нужного пункта выбираем из выпадающего списка макрос, который для выполнения.

Процедура запускается в ответ на изменение фокуса, обновление формы, нажатие клавиш и кнопок, движение указателя мыши и т. д. Список событий зависит от элемента управления.

Макросы событий

Макросы данных

В версии Access 2010 и выше стали доступны макросы данных. Они вызываются изменениями, происходящими в элементах какого-либо объекта, или независимы и вызываются по наименованию. Благодаря этому типу макросов Access приобретает возможности «продвинутых» СУБД (система управления базами данных).

Теперь возможна фиксация истории изменений строки таблицы, проверка параметров добавляемой записи перед ее вставкой – таким образом в СУБД, например, MS SQL Server работают триггеры. При редактировании отдельных полей система может формировать и отправлять уведомления на электронную почту пользователей.

Макрос данных

Эти программные единицы добавляются в режиме таблицы. На вкладке «Работа с таблицами» — «Таблица» выбирается, когда будет срабатывать макрос: до или после изменения/удаления, после вставки. Здесь же можно добавить именованный макрос, вызываемый по наименованию. Список макрокоманд здесь содержит операции, которые выполняются с данными – ошибками в значениях, полями, записями таблиц.

Условия

Часто необходимо, чтобы макрос работал не каждый раз, а только в том случае, когда соблюдается какое-либо условие. Для задания этого условия в макрос Access добавляется макрокоманда «Если» из каталога. Здесь прописывается условие, при котором будет выполняться следующая операция. При необходимости добавляется также команда «Иначе» или целый дополнительный блок «Иначе если».

В приведенном примере мы закрываем форму «Абитуриенты», если поле «Фамилия» пустое. Если же это не так, мы сохраняем запись и только после этого закрываем форму.

Макрос с условием

Благодаря новому конструктору макросов в Access, начиная с версии 2010, разработчик может гибко настроить систему и обеспечить большую безопасность данных в таблицах. Желаем вам удачи в освоении новых возможностей MS Access.

Источники: fb.ru

204 / 4 / 1

Регистрация: 14.05.2012

Сообщений: 78

1

08.06.2012, 11:41. Показов 11481. Ответов 11


Студворк — интернет-сервис помощи студентам

Доброго времени суток.
Уважаемые форумчане, кто подскажет как можно осуществить данную последовательность действий.
Макрос в excel выполняет определенные действия, далее ему нужно запустить макрос в access и после его отработки продолжить работу в том же файле. Проблема состоит в том что бы он запускал определенный макрос в access и продолжил работу только после завершения отработки access.



0



mc-black

2784 / 716 / 106

Регистрация: 04.02.2011

Сообщений: 1,443

09.06.2012, 10:27

2

Лучший ответ Сообщение было отмечено как решение

Решение

В редакторе VBA Excel в меню Tools — References… найти и отметить галочкой Microsoft Access 12.0 Object Library (номер версии у Вас можеть быть другим). макрос в Excel для запуска макроса в Access выглядит примерно так:

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Sub m()
    Dim acc As Access.Application
    
    Set acc = New Access.Application
    
    ' Открыть базу данных: указать путь к базе и имя файла базы
    acc.OpenCurrentDatabase ThisWorkbook.Path & "" & "db1.mdb"
    
    ' Отобразить окно приложения Access
    acc.Visible = True
    
    ' Выполнить макрос в базе данных
    acc.DoCmd.RunMacro "Macro001"
    
    Set acc = Nothing
End Sub

Рабочий пример во вложении

Вложения

Тип файла: zip acc1.zip (17.5 Кб, 108 просмотров)



5



204 / 4 / 1

Регистрация: 14.05.2012

Сообщений: 78

13.06.2012, 13:45

 [ТС]

3

У меня на шагу №7 возникает ошибка ‘7866’

Цитата
Сообщение от mc-black
Посмотреть сообщение

acc.OpenCurrentDatabase ThisWorkbook.Path & «» & «db1.mdb»

У меня эта строчка выглядит так
[acc.OpenCurrentDatabase ThisWorkbook.Path & «S:Distributors reportSMarchukPolki2012» & «Polki.mdb»]



0



Эксперт MS Access

26777 / 14456 / 3192

Регистрация: 28.04.2012

Сообщений: 15,782

13.06.2012, 13:51

4

Marich, если вы распечатаете в Immediate строку ThisWorkbook.Path & «S:Distributors reportSMarchukPolki2012» & «Polki.mdb», то увидите совсем не тот путь, который ведет к успеху.
Если «S:Distributors reportSMarchukPolki2012» & «Polki.mdb» это полный путь к мдб-файлу, то зачем еще ThisWorkbook.Path? Он просто не нужен.



0



Alex77755

11482 / 3773 / 677

Регистрация: 13.02.2009

Сообщений: 11,147

16.06.2012, 10:36

5

А если это не макрос, а функция? Это реально?
Получить рекордсет не из запроса, а как результат действия функции.
Вот так звучит задание: обработка должна производиться в ексессе при запуске макроса
вот функция в аксесссе(рабочая)

Visual Basic
1
2
3
4
5
6
7
8
Function UNIK(POLE, KRIT) As Recordset
Dim DBS As Database
Set DBS = CurrentDb
Dim SQLs As String
SQLs = "Select Штат." & POLE & " From  Штат WHERE  Штат." & POLE & "='" & KRIT & "'"
If KRIT = "U" Then SQLs = "Select DISTINCT Штат." & POLE & " From  Штат "
Set UNIK = DBS.OpenRecordset(SQLs)
End Function

и тестовая процедера

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
Sub QWERT() ' тестовая процедура
Dim RS As Recordset
Set RS = UNIK("подразделение", "ГРУ")'фильтр
 RS.MoveLast
 RS.MoveFirst
 Debug.Print RS.RecordCount
 Set RS = UNIK("подразделение", "U")'выбор уникальных
 RS.MoveLast
 RS.MoveFirst
 Debug.Print RS.RecordCount
 End Sub

в екселе делаю привязку

Visual Basic
1
2
3
    Set objAccess = CreateObject("Access.Application")
    Set objAccess = GetObject(ActiveWorkbook.Path & "db_29.mdb")
    Set dbBase = objAccess.CurrentDb

как получить рекордсет вызвав функцию в аксессе?



1



mc-black

2784 / 716 / 106

Регистрация: 04.02.2011

Сообщений: 1,443

16.06.2012, 14:21

6

В редакторе VBA Excel в меню Tools — References… найти и отметить галочкой Microsoft Access 12.0 Object Library (номер версии у Вас можеть быть другим).

В VBA-проекте Excel:

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Sub Macro1()
    Dim acc As Access.Application, Arg1 As String, Res1 As String
    
    Set acc = New Access.Application
    
    ' Открыть базу данных: указать путь к базе и имя файла базы
    acc.OpenCurrentDatabase ThisWorkbook.Path & "" & "db1.mdb"
    
    ' Раскоментировать, если необходимо отобразить окно приложения Access
    acc.Visible = True
    
    ' Выполнить макрос в базе данных
    acc.DoCmd.RunMacro "Macro001"
    
    ' Выполнить процедуру VBA в базе данных
    acc.Run "Macro002"
    
    ' Выполнить функцию VBA в базе данных (и вернуть параметр по указателю)
    Arg1 = ""
    Res1 = acc.Run("Macro003", Arg1)
    MsgBox Res1, vbOKOnly, Arg1
    
    Set acc = Nothing
End Sub

В VBA-проекте Access:

Visual Basic
1
2
3
4
5
6
7
8
Sub Macro002()
    MsgBox "Сообщение из макроса", vbOKOnly, "База данных"
End Sub
 
Function Macro003(Arg1 As String) As String
    Arg1 = "База данных"
    Macro003 = "Сообщение из макроса"
End Function

В итоге из Excel запускаются:
1. т.н. «Макрос» Access (Macros001);
2. процедура из VBA-проекта Access;
3. функция из VBA-проекта Access.

Думаю не составит труда вернуть рекордсет как результат функции или параметром процедуры/функции по указателю (ByRef).

Рабочий пример во вложении.

Вложения

Тип файла: zip acc2.zip (20.7 Кб, 70 просмотров)



2



204 / 4 / 1

Регистрация: 14.05.2012

Сообщений: 78

03.07.2012, 12:26

 [ТС]

7

Ок. Если немножко усложнить задачу. Тоже самое но запускае не макрос а запрос (это понятно 13 строчка будет выглядеть так acc.DoCmd.OpenQuery «NameQuery«, но в одном из полей критерий должен иметь значение переменной?



0



2784 / 716 / 106

Регистрация: 04.02.2011

Сообщений: 1,443

03.07.2012, 13:05

8

Делеаете запрос с параметром, значение параметра передаете методу, в чем сложность?



0



204 / 4 / 1

Регистрация: 14.05.2012

Сообщений: 78

03.07.2012, 13:41

 [ТС]

9

Сорри, не корректно написал сначала. Запрос этод создает таблицу. Нужно что бы он создавал таблицу название которой и есть значение параметра. Можно узнать какому методу передать?



0



2784 / 716 / 106

Регистрация: 04.02.2011

Сообщений: 1,443

03.07.2012, 14:20

10

Преобразуйте запрос, создающий таблицу в вид SQL (переключатель на панели Конструктор->SQL) и выложите код SQL-запроса здесь.



0



Marich

204 / 4 / 1

Регистрация: 14.05.2012

Сообщений: 78

10.07.2012, 10:37

 [ТС]

11

Вот вид кода. Этот запрос создает таблицу 22KS (в котором есть критерий 22KS) нужно что бы этот параметр (22KS) был переменной. И этот запрос отрабатовался 25 раз так как значение переменной будет менятся 25раз.

SQL
1
2
3
4
SELECT ChekFinal.[Demand Area], ChekFinal.[Name Sales Office], ChekFinal.[Sales GROUP], ChekFinal.[BP Territory], ChekFinal.Customer, ChekFinal.[Name Contractor], ChekFinal.DelDat, ChekFinal.Ordered, ChekFinal.Delivered INTO 22KS
FROM ChekFinal
GROUP BY ChekFinal.[Demand Area], ChekFinal.[Name Sales Office], ChekFinal.[Sales GROUP], ChekFinal.[BP Territory], ChekFinal.Customer, ChekFinal.[Name Contractor], ChekFinal.DelDat, ChekFinal.Ordered, ChekFinal.Delivered
HAVING (((ChekFinal.[Name Sales Office])="22KS"));



0



0 / 0 / 0

Регистрация: 11.08.2015

Сообщений: 17

28.02.2020, 10:15

12

Цитата
Сообщение от mc-black
Посмотреть сообщение

acc.OpenCurrentDatabase ThisWorkbook.Path & «» & «db1.mdb»

Здравствуйте.
Как запустить запароленую базу данных? Запускается через рабочую группу «infosystem.mdw». Требуется ввести логин и пароль.
Пробывал вот так, не получилось.
acc.OpenCurrentDatabase «c:dirOM.mdb /wrkgrp c:dirinfosystem.mdw /user ЛОГИН /pwd ПАРОЛЬ»



0



В этой главе мы рассмотрим основы макросов в Access. Макрос – это инструмент, который позволяет автоматизировать задачи и добавлять функциональность к формам, отчетам и элементам управления.

  • Макросы в Access работают несколько иначе, чем макросы в Word или Excel, где вы по сути записываете последовательность нажатий клавиш и воспроизводите их позже.

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

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

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

Макросы в Access работают несколько иначе, чем макросы в Word или Excel, где вы по сути записываете последовательность нажатий клавиш и воспроизводите их позже.

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

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

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

Создание макроса

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

Создание макроса

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

Информация о работе

Теперь перейдем к представлению «Дизайн» этой формы и кнопке «Добавить» в меню «Элементы управления». Когда вы отпустите кнопку мыши, вы увидите диалоговое окно Command Button Wizard.

Общая кнопка

Существует несколько способов создания этого действия макроса, но самый простой способ – просто использовать мастер кнопок команд.

Самый простой способ

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

Frmjobs

Вы должны указать, какую форму вы хотите открыть с помощью кнопки. А пока давайте выберем frmJobs и нажмите « Далее» .

Открытые записи

На этом экране у нас есть два варианта: мы можем открыть форму и отобразить очень конкретную запись , или мы можем открыть форму и показать все записи . Давайте выберем второй вариант и нажмите Далее, как на скриншоте выше.

Посмотреть вакансии

Мы могли бы заставить командную кнопку отображать картинку, или вы можете выбрать Показать текст. Здесь мы хотим, чтобы текст View Jobs отображался, и теперь нажмите Next.

CmdViewJobs

Теперь вы можете дать значимое имя вашей командной кнопке, как на скриншоте выше. Это может быть использовано в других кодах или других макросах. Давайте назовем это cmdViewJobs и нажмите Finish .

Теперь перейдите к представлению формы.

Форма ViewJobs

Теперь вы увидите кнопку «Просмотр вакансий» в вашей форме. Давайте нажмем на это.

Кнопка просмотра вакансий

Теперь у вас есть открытая форма, но вы не будете просматривать какую-либо информацию. Вернемся к представлению «Дизайн» формы frmEmployeeData. Убедитесь, что выбрана командная кнопка, и щелкните вкладку «Событие» в окне свойств.

Командная кнопка

При нажатии вы увидите встроенный макрос, созданный мастером. Если вы хотите изменить этот макрос, нажмите кнопку…, чтобы открыть макрос, созданный мастером.

Встроенный макрос

Это конструктор макросов, а справа вы увидите каталог действий. Здесь все ваши действия будут жить в папках. У вас есть опции ввода данных, импорт / экспорт данных и т. Д., А слева в основной области у вас есть другой макрос. Он содержит только одно действие, и, нажав на это одно действие, вы можете просмотреть другие свойства для этого конкретного действия.

Макро Дизайнер

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

Режим данных

Теперь сохраните свой макрос, а затем закройте конструктор макросов и вернитесь в представление формы.

Сохранить макрос

Давайте снова кликнем на View Jobs.

ViewJob

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

Понравилась статья? Поделить с друзьями:

А вот еще интересные статьи:

  • Процентное сравнение в excel
  • Процесс внесения изменений в документ word
  • Процентное соотношение ячеек в excel
  • Процесс word в диспетчере задач
  • Процентное соотношение суммы в excel

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии