Выполнение макроса. Понятие макрокоманды и макроса Задания для самостоятельной работы

МАКРОСЫ.

Большинство пользователей создавая и используя документы Microsoft Office используют стандартные возможности приложений. Однако Office дает широкие возможности для автоматизации работы с документами – это программирование в VBA и использование макросов.

VBA, язык программирования Visial Basic for Applications, - язык программирования, встроенный в приложения Office, используемый для создания макросов.

Макрос и макрорекордер.

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

Макрос – это программа, написанная на VBA. VBA – специальная версия Visial Basic (for Application).

В Office существует 2 способа создания макроса:

§ запись макрорекордером действий пользователя

§ открытие окна VBA и ввод операторов VBA

Чаще всего пользователь использует VBA для коррекции макроса, записанного рекордером.

Для работы с макросами в MS Office 2007-13 выводим на ленту вкладку РАЗРАБОТЧИК (кнопка OFFICE/ ПАРАМЕТРЫ Word / НАСТРОЙКА ЛЕНТЫ).

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

Запись макроса.

§ вкладка РАЗРАБОТЧИК/ЗАПИСЬ МАКРОСА, даем имя макросу. Имя не должно содержать пробелы, начинаться с буквы, не содержать спец.символы. максимальная длина имени – 80 символов. Если созданному макросу присваивается имя, совпадающее с именем встроенного макроса Microsoft Word, то существующий макрос заменяется новым.

§ выполняем команды

§ вкладка РАЗРАБОТЧИК/ОСТАНОВИТЬ ЗАПИСЬ

Обычно, макрос доступен для шаблона Normal.dot, он автоматически сохраняется вместе c ним.

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

§ вкладка РАЗРАБОТЧИК/МАКРОСЫ, выбираем нужный и ВЫПОЛНИТЬ.



Назначение макросу кнопки на панели быстрого доступа и/или сочетания клавиш.

§ или кнопка OFFICE/ ПАРАМЕТРЫ Word/НАСТРОЙКА

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

При назначении макросу сочетания клавиш, следует помнить, что в Worde зарезервированы многие сочетания и найти «свободное» сочетание непросто.

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

§ вкладка РАЗРАБОТЧИК/МАКРОСЫ, выбираем нужный и УДАЛИТЬ.

Изменение текста макроса.

При записи макроса рекордер сохраняет последовательность текстовых инструкций на VBA. Это текстовое описание называется исходным кодом. Его можно просмотреть и исправить:

§ вкладка РАЗРАБОТЧИК/МАКРОСЫ, выбираем нужный и ИЗМЕНИТЬ.

Для запуска макроса из редактора VBA: кнопка RUN ( )

Создание автоматически выполняемых макрокоманд.

В Word предусмотрены 5 специальных имен для макрокоманд

VBA – программы состоят из простой последовательности действий: программа получает доступ к объекту, придает ему свойства, производит с ним действия. Каждый документ, абзац, … – это объекты. Например, объект Selection – выделенный фрагмент. Сам Word – объект Appication.(см. приложения 2,3)



Каждый объект имеет свои характеристики – свойства.

Многие объекты выполняют действия, которые называются методами.

Например,

ActiveDocument.Close (объект - активный документ, метод - закрыть)

В соответствии с синтаксисом VBA разделитель- точка.

Обычно: объект, точка, метод и/или свойства (через точку)

Правая мышь на объекте – список методов, свойств (List Properties/Methods)

Последовательность With ….. End With позволяет указать несколько методов/свойств для одного объекта, не повторяя многократно его имя.

Практическое задание 1.

Запишем макрос с именем «мой_первый_макрос», в который запишем следующие команды:

§ Альбомная ориентация страницы

§ Масштаб просмотра – 33%

В результате получим следующий код

Sub мой_первый_макрос()

"

" мой_первый_макрос Макрос

" Макрос записан 03.12.07

With ActiveDocument.PageSetup

LineNumbering.Active = False

Orientation = wdOrientLandscape

TopMargin = CentimetersToPoints(1.5)

BottomMargin = CentimetersToPoints(3)

LeftMargin = CentimetersToPoints(2)

.RightMargin = CentimetersToPoints(2)

Gutter = CentimetersToPoints(0)

HeaderDistance = CentimetersToPoints(1.25)

FooterDistance = CentimetersToPoints(1.25)

PageWidth = CentimetersToPoints(29.7)

PageHeight = CentimetersToPoints(21)

FirstPageTray = wdPrinterDefaultBin

OtherPagesTray = wdPrinterDefaultBin

SectionStart = wdSectionNewPage

OddAndEvenPagesHeaderFooter = False

DifferentFirstPageHeaderFooter = False

VerticalAlignment = wdAlignVerticalTop

SuppressEndnotes = False

MirrorMargins = False

TwoPagesOnOne = False

GutterPos = wdGutterPosLeft

ActiveWindow.ActivePane.View.Zoom.Percentage = 33

End Sub

Можно исправить текст этого макроса, например,

§ изменим процент, например 33 на 42

§ изменим поля

§ заменим False на True в строке.LineNumbering.Active = False (будет автонумерация строк)

§ заменим в строке.Orientation = wdOrientLandscape на wdOrientPortrait , ориентация бумаги будет книжная

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

Практическое задание 2.

Создадим макрос создающий окно сообщений при открытии файла.

MessageBox - окно сообщения, которое появляется на экране.

Для вывода MessageBox при открытии какого-либо файла MS Word необходимо создать макрос с именем AutoOpen и внутри него вызвать функцию msgbox. Это будет выглядеть так:

Sub AutoOpen()

" Данная функция вызывается при открытии документа

" Выводим MessageBox

MsgBox "Здравствуй, дружок!"

Последовательность действий (один из вариантов):

§ вкладка РАЗРАБОТЧИК/МАКРОСЫ, даем любое имя и СОЗДАТЬ

§ В окне редактора VBA, меняю имя и печатаем текст программы на VBA

§ Сохраняем

§ Запускаем

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

Команда для вывода окна сообщений имеет вид:

MsgBox (promt, button,title,helpfile)

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

· button – необязательный аргумент, определяющий тип окна сообщения, наличие кнопок Ок, Отмена, Стоп, Пропустить и т.д

· title – необязательный аргумент, определяющий заголовок окна

· helpfile– необязательный аргумент, определяющий какой файл справки будет открыт, если пользователь нажмет F1

Практическое задание 3.

Создание простого диалогового окна.

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

Создание формы:

§ Окно VBA (ALT+F11)

§ INSERT/New Form или UserForm (вставка новой формы)

§ В окне Properties можно настроить свойства формы, например свойство Caption позволяет дать форме имя

§ Используя панель ToolBox устанавливаем на форму элементы управления:

· Label –надпись

· CommandButton- командная кнопка для выполнения какого-либо действия

· TextBox -текстовое поле

· Image – рисунок

· ChtckBox – флажок

§ Настраиваем работу каждого элемента. Например, 2 щелчка на CommandButton даст возможность написать те операторы VBA, которые должны выполняться при нажатии на эту кнопку.

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

Load UserForm1

UserForm1.Show

Т.к. освоение VBA требует много времени и знаний основ алгоритмизации, пользователи обычно записывают команды Word с помощью макрорекордера, затем исправляют и/или дописывают макрос.


Созданный макрос следует выполнить. Существует несколько способов запуска макросов:

1. Посредством команды Макросы→ Макрос →Сервис

2. С помощью комбинации клавиш, назначенных макросу;

3. Посредством команды меню, назначенной для данного макроса;

4. Посредством кнопки, назначенной данному макросу на панели инструментов.

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

Рассмотрим более подробно каждый из указанных способов запуска макросов.

1. Команда Макросы→Макрос →Сервис – стандартный вариант вызова макроса на выполнение. В диалоговом окне Макрос выбрать созданный макрос и нажать кнопку [Выполнить]. Данный способ пригоден также для редактирования и удаления макрокоманды – кнопки [Правка], [Удалить].

2. С помощью комбинации клавиш (рис. 2):

Рис. 2. Диалоговое окно. Настройка клавиатуры для назначения макросу

сочетания клавиш в Microsoft Word.

2. Для вызова макроса в диалоговом окне Настройка клавиатуры на вкладке Новое сочетание клавиш указывается комбинация управляющих клавиш. Например, совместно с комбинацией цифровых или алфавитных клавиш (на латинице);

Затем нажимается кнопка [Назначить], которая производит назначение.

3. Вызов командой в меню – осуществляется стандартная настройка меню: добавление пункта меню, связанного с вызовом макрокоманды:

В появившемся диалоговом окне Настройка , на вкладке Команды из поля со списком Категории выбирается команда Макросы , а затем имя макроса;

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

4. Посредством кнопки, назначенной данному макросу на панели инструментов (рис. 3):

В Word при нажатии кнопки [Панели] (см. рис. 1) в диалоговом окне Запись макроса появляется диалоговое окно Настройка , в котором на вкладке Команды из поля со списком Категории выбирается Макросы , а затем имя макроса;

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

щелкнув по кнопке [Изменить выделенный объект], можно выбрать понравившийся значок для кнопки, запустив командуü Выбрать значок для кнопки (рис. 4). Можно также редактировать значок с помощью команды Изменить значок для кнопки (окно Редактор кнопок ) (рис. 5).

Рис. 3. Диалоговое окно Настройка для назначения макросу
кнопки на панели инструментов в Microsoft Word.

Рис. 4. Диалоговое окно выбора значка для кнопки

Рис. 5. Диалоговое окно Редактор кнопок

В Excel дополнительно имеется возможность запуска макроса посредством назначенного ему графического образа.

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

- [Остановить запись] – завершает запись макрокоманды;

[Пауза] – приостанавливает запись макрокоманды (рис. 6).

Рис.6. Панель записи макроса в Microsoft Word

  1. Изменение макросов

Макросы сохраняются в шаблоне в виде текстов программ. Каждый шаблон может содержать произвольное количество макросов. Поскольку dot-файлы (dot – расширение файлов шаблонов) нельзя читать как документы, в Word существуют специальные средства, позволяющие просмотреть и отредактировать макрос как последовательность операторов на языке VBA (рис.7). В процессе редактирования любой макрос представлен в виде последовательности операторов языка VBA. Суть редактирования макроса состоит в удалении, добавлении и замене операторов, как при программировании на любом другом языке.

Рис.7. Диалоговое окно редактора VBA

Редактирование макроса выполняется посредствам команды Макросы . В диалоговом окне Макрос , в поле Имя выбирается имя макроса, подлежащего редактированию. Процесс начинается при нажатии кнопки [Отладка]. Можно указать имя несуществующего макроса. Если после этого нажать кнопку [Создать], будет создан новый макрос, а пользователь получит возможность получит возможность записать его на языке VBA.

Кнопка [Отладка] служит для открытия окна редактирования макроса, в котором отображается содержимое макроса на языке VBA. Окно редактирования макроса подобно обычному окну документа, но отличается отсутствием координатной линейки и наличием специальной панели инструментов. Можно открыть несколько окон обработки макросов. Текст макроса редактируется так же, как обычный текст программы VBA. При этом доступно большинство команд редактирования текста, например команды Копировать и Вырезать .

С помощью кнопки [Удалить] указанный макрос удаляется.

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

Список литературы:

1. Мусин К.А «Техническое приложение к Microsoft Word»

2. Бородина А.И «Макропрограммирование»

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

  1. Выберите первый снимок в палитре History . Это вернет изображение в первоначальное состояние.
  2. Найдите в палитре Actions строку с командой Spatter и щелкните на пустом прямоугольнике слева от имени команды. В нем появится пиктограмма, изображающая диалоговое окно, представленная на рисунке.
  3. Spatter Frameb .
  4. Actions .
  5. При выполнении команды Spatter Photoshop откроет диалоговое окно фильтра, в котором вы сможете выбрать желаемые параметры. Попробуйте, например, уменьшить значение Smoothness до 2.
  6. Нажмите кнопку ОК . Макрокоманда продолжит выполнение.

Заметьте, что каждое новое выполнение макрокоманды создает новый снимок исходного состояния документа. Это очень полезно, но не всегда необходимо. Например, если вы подбираете параметры команд,то с каждой пробой будет появляться новый снимок. С другой стороны, удалять команду создания снимка тоже нежелательно - можно безвозвратно потерять результаты предыдущей работы,еслимакрокоманданеподойдет. Выход в том, чтобы временно отменить выполнение ненужной команды.

  1. Щелкните на галочке, слева от имени команды Make snapshot в палитре Actions .
  2. Выберите имя всей макрокоманды Spatter Frame.
  3. Запустите макрокоманду на выполнение щелчком на соответствующей пиктограмме в палитре Actions .
  4. Откройте палитру History и убедитесь, что новый снимок не был создан. Использование временного отключения той или иной команды очень полезно при создании собственных макрокоманд и при их отладке. Дальнейшие изменения обязательно затронут саму макрокоманду и потребуют записи новых команд и удаления существующих.

Запись макрокоманды.

В этом разделе описывается создание простейшей, но очень полезной макрокоманды, позволяющей центрировать изображение на текущем слое. Воспользуемся одной особенностью команды Paste : она размещает изображение точно по центру слоя. Для записи макрокоманды подойдет любое изображение, имеющее слой Background и еще один слой. То изображение, которое уже находится на экране, удовлетворяет этим критериям. При создании макрокоманды будем предполагать, что слой, который требует центровки, к моменту запуска макрокоманды активен.

  1. Активизируйте слой Layer 1.
  2. Разместим макрокоманду в новом наборе макрокоманд. В палитре Actions нажмите кнопку создания нового набора макрокомандCreate new set .
  3. В открывшемся диалоговом окне New Set введите имя нового набора, например, "My Actions".
  4. Нажмите кнопку ОК. В палитре появился новый набор.
  5. В палитре Actions выберите пиктограмму создания новой макрокоманды Create new action.
  6. В появившемся диалоговом окне New Action введите имя макрокоманды в поле Name , например, "Center (Layer)". Ниже этого поля расположен список всех наборов макрокоманд, присутствующих в палитре. По умолчанию в нем выбран выделенный набор, My Actions. Остальными элементами этого диалогового окна займемся чуть позже.

Совет. Когда вы создаете свою макрокоманду, указывайте с чем она работает. Если макрокоманда требует для работы изображения на отдельном слое, укажите в скобках "Layer". Если же для ее функционирования необходима выделенная область, укажите "Selection". Такие обозначения приняты при обмене макрокомандами.

  1. Нажмите кнопку Record . С этого момента все ваши действия в программе будут записываться в макрокоманду Center (Layer). После выполнения каждой команды сразу же смотрите в палитру Actions , проверяя результат ее записи. Пиктограмма записи в палитре подсвечена красным цветом.
  2. Выберите команду All меню Select или нажмите клавиши CTRL+A . В палитре Actions появилась первая команда Set Selection с параметромТо , соответствующим выделению всего холста (All ).
  3. Выберите команду Cut меню Edit Actions.
  4. Выберите команду Paste меню Edit . Соответствующая команда появится и в палитре Actions.

Совет. Если при записи макрокоманды вы ошибочно сделали не то действие и сразу же это обнаружили, выберите команду Undo меню Edit . Ошибочная команда из палитры Actions при этом не исчезнет, но изображение вернется в предыдущее состояние. Далее просто введите верную команду. Оставшуюся в палитре неправильную команду несложно удалить после завершения записи. Для этого нужно просто перетащить строку команды к пиктограмме удаления.

  1. Все действия макрокоманды выполнены и пора остановить запись. Щелкните на пиктограмме остановки записи в палитре Actions .

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

  1. Выберите в палитре Actions заголовок созданной макрокоманды.
  2. Выполните команду Insert Stop... из меню палитры Actions . В открывшемся диалоговом окне Record Stop увидите поле Message , в которое можете ввести несколько строк комментария, и флажок Allow Continue , определяющий, разрешить или нет дальнейшее выполнение макрокоманды. Введите текст комментария и установите флажок Allow Continue.
  3. Нажмите кнопку ОК .
  4. Переместите команду Stop в палитре Actions на первое место в нашей макрокоманде тем же способом, которым меняли порядок слоев в палитре слоев -Drag and Drop. Мы добавили комментарий к макросу, который, сможет остановить выполнение макроса, если пользователь нажмет Stop в открывшемся диалоговом окне.

В программировании, даже таком элементарном, требуется, чтобы программа освобождала все занятые ресурсы компьютера. Данная макрокоманда этому требованию не удовлетворяет, поскольку в буфере обмена осталось все содержимое слоя. Если изображение достаточно велико, то занятая память отрицательно скажется на производительности программы; С другой стороны, при переключении на любую другую программу и обратно, будет происходить передача содержимого буфера обмена между ними. Эго приведет к назойливой задержке. В качестве самостоятельной работы дополните макрокоманду командой Purge из меню Edit .

Примечание. Чтобы записать контур в макрокоманду, нужно его предварительно создать, а затем воспользоваться командой Insert Path меню палитры Actions . При проигрывании макрокоманды контур будет воспроизведен на новом изображении. Запись макрокоманд в Photoshop имеет значительные ограничения. Во-первых, не записываются действия инструментов рисования (Brush, Stamp, Eraser и пр.). Во-вторых, нет возможности управления ходом выполнения макрокоманды. Макрокоманда не может вызывать различные команды в зависимости от каких-либо условий, нельзя организовать циклическое выполнение группы команд, получение и использование информации о состоянии документа (размер, разрешение, цветовая модель, количество и типы слоев и каналов и т.п.).

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

2. Обзор событий

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

3.1. Задание условий выполнения макрокоманд.

3.2. Создание группы макросов.

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

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

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

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

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

Макрокоманды по функциональному признаку можно разделить на несколько категорий:

– работа с данными в формах и отчетах;

– выполнение команд, макросов, процедур и запросов;

– работа с объектами;

– импорт/экспорт данных и объектов;

– прочие.

В таблице 11.1 представлены 56 макрокоманд СУБД MS Access, сгруппированных по категориям.

Таблица 11.1

Назначение

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

Работа с данными в формах и отчетах

Отбор данных

ПрименитьФильтр (ApplyFilter)

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

СледующаяЗапись (FindNext).

НайтиЗапись (FindRecord),

КЭлементуУправления

НаСтраницу (GoToPage),

НаЗапись (GoToRecord)

Обновление данных или экрана

Обновление (Requery)

ПоказатьВсеЗаписи (ShowAllRecords)

Выполнение

Выполнение команды

ВыполнитьКоманду (RunCommand)

Выполнение макроса, процедуры или запроса

ЗапускПрограммы (RunCode), ЗапускМакроса (RunМасго), ОткрытьЗапрос (OpenQuery), ЗапускЗапросаSQL (RunSQL)

Выполнение другого приложения

ЗапускПриложения (RunApp)

Прерывание выполнения

ОтменитьСобытие (CancelEvent),

ОстановитьВсеМакросы (StopAIIMacros),

ОстановитьМакрос (Stop Macro)

Выход из Microsoft Access

Выход (Quit)

Импорт/
экспорт

Передача объектов Microsoft Access в другие приложения

ВывестиВФормате (OutputTo),

ОтправитьОбъект (SendObiect)

Преобразование формата данных

ПреобразоватьБазуДанных (TransferDatabase), ПреобразоватьЭлектроннуюТаблицу (TransferSpreadsheet)

ПреобразоватьТекст (TransferText)

Работа с oбъeктaми

Копирование, переименование или сохранение объекта

КопироватьОбъект (CopyObject), Переименовать (Rename),

КопироватьФайлБазыДанных
(CopyDatabaseFile)

Удаление объекта

УдалитьОбъект (DeleteObject)

Изменение размеров или положения окна

Развернуть (Maximize),

Свернуть (Minimize),

СдвигРазмер (MoveSize),

Восстановить (Restore)

Открытие или закрытие объекта

ОткрытьФорму (OpenForm), ОткрытьМодуль (OpenModule), ОткрытьЗапрос (OpenQuery), ОткрытьОтчет (OpenReport), ОткрытьТаблицу (OpenTable),

ОткрытьФункцию (OpenFunction)

ОткрытьСтраницу (OpenDataAccessPage)

Открыть схему (OpenDiagram)

ОткрытьСохраненнуюПроцедуру (OpenStoreProcedure)

ОткрытьПредставление (OpenView)

Закрыть (Close)

Печать объекта

Печать (PrintOut)

Выделение объекта

ВыделитьОбъект (SelectObject)

Задание значения поля, элемента управления или свойства

ЗадатьЗначение (SetValue)

Обновление объекта

ОбновитьОбъект (RepaintObject)

Создание специальной или общей строки меню, специального или глобального контекстного меню

ДобавитьМеню (AddMenu)

Задание состояния пунктов меню в специальной или общей строке меню

ЗадатьКомандуМеню (SetMenultem)

Вывод информации на экран

ВыводНаЭкран (Echo),

ПесочныеЧасы (Hourglass),

Сообщение (MsgBox),

УстановитьСообщения (SetWarnings)

Генерация нажатий клавиш

КомандыКлавиатуры (SendKeys)

Вывод на экран или скрытие встроенной или специальной панели инструментов

ПанельИнструментов (ShowToolbar)

Подача звукового сигнала

Сигнал (Веер)

Более полную информацию по макрокомандам можно получить в разделе Справка Microsoft Access | Программирование в Microsoft Access | Макрокоманды .

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

По месту хранения макросы разделяются на два вида:

простые (объект, состоящий из набора макрокоманд);

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

По способу выполнения макросы разделяются на два вида:

линейные (каждая макрокоманда в макросе выполняется последовательно одна за другой);

с условием (макрокоманды выполняются в зависимости от выполнения определенных условий).

2. Обзор событий

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

Практически все программирование в MS Access сводится к написанию макросов или процедур, обрабатывающих события, т. е. программируется реакция объектов на происходящие события. События различных объектов MS Access представлены на рис.11.1 – 11.3.

События можно разделить на следующие категории, сгруппировав их по функциональному признаку (выполняемым операциям):

– открытие и закрытие форм и отчетов;

– изменение данных;

– смена фокуса ввода;

– события работы с клавиатурой;

– события работы с мышью;

– печать;

– отслеживание ошибок;

– истечение промежутка времени.

Рис.11.1. Вкладка События окна свойств формы.

Рис.11.2. Вкладка События окна свойств элемента управления Подчиненная форма/отчет.

Рис.11.3. Вкладка События окна свойств элементов управления. Кнопка (а) и Поле со списком (б).

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

Создание макроса состоит из двух шагов:

1. В окне базы данных перейти на вкладку Макросы и щелкнуть по кнопке Создать .

2. В появившемся окне Конструктор макросов создать макрос.

Окно Конструктора макросов состоит из двух областей (рис.11.4):

– верхняя область предназначена для описания логической структуры макроса;

– нижняя область предназначена для описания аргументов макрокоманд.

В верхней области Конструктора макросов по умолчанию отображается два столбца Макрокоманда и Примечание . Отображение столбцов Имя макроса и Условие осуществляется с помощью соответствующих кнопок на панели инструментов Конструктор макросов .

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

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

Ячейки в столбце Имя макроса используются для задания имени макроса в группе макросов.

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

Рис.11.4. Окно Конструктор макросов

Для быстрого переключения между верхней и нижней областью окна Конструктора макросов можно использовать клавишу < F 6> .

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

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

Для ввода значений аргументов макрокоманды используется два способа:

– выбор значения из списка допустимых значений;

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

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

Рис.11.5. Окно Конструктор макросов с заполненными значениями аргументов

3.1. Задание условий выполнения макрокоманд

Для создания макросов нелинейной структуры необходимо отобразить столбец Условие и указать в нем условие выполнения макрокоманд.

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

Пример создания макроса нелинейной структуры

В форме Поставщики имеется два поля Страна и Индекс . Необходимо до обновления записи (перед сохранением) проверить правильность введенного индекса для некоторых стран.

Если поле Страна имеет значение NULL, то сохранить запись, т. к. проверка индекса на принадлежность стране невозможна, иначе осуществить проверку значения в поле Индекс :

– если поле Страна имеет значение Франция , Италия или Испания , а в поле Индекс введено не 5 знаков, то не сохранять запись, если 5 – сохранить;

– если поле Страна имеет значение Австралия или Сингапур , а в поле Индекс введено не 4 знака, то не сохранять запись, если 4 – сохранить;

Алгоритм макроса в виде блок-схемы представлен на рис 11.6, а реализация макроса в окне Конструктор макросов , приведена на рис.11.7.

Данный макрос связан со свойством До обновления на вкладке События формы Поставщики .

Рис.11.6. Алгоритм работы макроса

Рис.11.7. Реализация макроса, имеющего нелинейную структуру

3.2. Создание группы макросов

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

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

– принадлежности к объекту автоматизации (для каждой формы и отчета);

– принадлежности к типу автоматизируемых операций.

Группа макросов хранится в одном объекте и, следовательно, имеет одно общее имя – имя объекта. Для запуска макроса, входящего в группу, используется полное имя: [Имя_группы].[Имя_макроса_в_группе].

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

1. Открыть Конструктор макросов .

2. Отобразить столбец Имя макроса.

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

4. В ячейках столбца Макрокоманда , начиная со строки, в которой находится имя макроса, ввести все макрокоманды составляющие макрос и их аргументы.

5. Пропустить одну строку.

6. Повторить шаги 3 – 5 для каждого макроса.

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

Рис.11.8. Реализация группы макросов

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

Способов запуска макросов очень много.

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

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

Запуск макроса из Конструктора макросов.

Для запуска простого макроса или первого макроса из группы щелкнуть по кнопке Запуск на панели инструментов Конструктор макросов .

Для запуска любого макроса из группы выполнить команду Сервис | Макрос | Выполнить макрос … и в диалоговом окне Запуск макроса выбрать имя макроса.

Запуск макроса из окна базы данных.

Для запуска простого макроса или первого макроса из группы перейти на вкладку Макросы , выбрать макрос и щелкнуть по кнопке Запуск в окне БД.

Запуск любого макроса из группы см. выше.

1. Открыть форму или отчет в режиме Конструктор .

2. Выделить объект автоматизации (элемент управления, форму или отчет, раздел формы или отчета).

3. Открыть диалоговое окно Свойства объекта .

4. Выбрать событие на вкладке События , которому назначается макрос.

5. Выбрать из списка полное имя макроса.

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

Рис.11.9. Назначение макроса событию

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

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

Для создания макроса в окне базы данных нужно выбрать вкладку Макросы и нажать на кнопку Создать . Появится окно конструктора макросов (рис. 3.37). Оно состоит из двух столбцов: Макрокоманда и Примечание. В столбце Макрокоманда перечисляются команды, подлежащие выполнению. Чтобы в ячейке столбца Макрокоманда задать нужную макрокоманду, ее следует выбрать из списка. Столбец Примечание , содержит комментарии к командам. При выполнении макроса он игнорируется, однако его заполнение делает текст макроса понятнее.

Рис. 3.37. Вид окна макроса.

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

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

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

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

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