20-11-2017
колонтитул в word 2007, 0000002111

Этапы проектирования и записи макроса

Задание стартовых условий для макроса

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

Запись макроса включает четыре основных этапа:

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

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

Запуск макрорекордера и присвоение имени макросу

Обычно запуск макроса можно осуществить пунктом меню "Сервис - Макрос - Начать запись". В диалоговом окне необходимо ввести имя макроса и выбрать место для его сохранения.

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

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

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

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

Текстовое окно "Описание". Данная информация макросом непосредственно не используется. Это окно предназначено для вода некоторых замечаний и комментариев о том, что выполняет данный макрос.

Раскрывающийся список "Макрос доступен для". Этот список позволяет выбрать, где следует сохранить записанный макрос. Макросы, записанные в Word, всегда сохраняются в файле документа (.doc) или в файле шаблона документа (.dot). Макросы, записываемые в Excel, всегда сохраняются в файле рабочей книги (.xls).

Пример реализации макроса - цель: выровнять по разделителю цифры в столбце таблицы.

Sub CellAlignDecimal()
Dim oTbl As Table 'Таблица, в которой работаем
Dim oCell As Cell 'Ячейка таблицы
Dim c As Integer 'Количество столбцов в таблице

Set oTbl = Selection.Tables(1) 'Работаем в таблице, где находится курсор
Set oCell = oTbl.Range.Cells(1) 'Первая ячейка таблицы
c = oTbl.Columns.Count

'Перебор всех ячеек
Do
'Обрабатываем ячейки только в последнем столбце
If oCell.ColumnIndex = c Then
With oCell.Range.ParagraphFormat
.Alignment = wdAlignParagraphJustify 'Абзац выравниваем по ширине
.FirstLineIndent = 0 'Отступ первой строки убираем
.TabStops.ClearAll 'Убираем все отступы табуляции в ячейке
'Ставим позицию табуляции по разделителю посередине ячейки
.TabStops.Add oCell.Width / 2, wdAlignTabDecimal, wdTabLeaderSpaces
End With
End If
Set oCell = oCell.Next
DoEvents
Loop Until oCell Is Nothing
End Sub
Макрос простой, но имеет ряд особенностей работы с таблицей, на которые стоит обратить внимание:
  1. Перебор ячеек я делаю не циклом For или For Each, а циклом Do…Loop Until, выбирая следующую ячейку методом Next. Оказывается, этот способ работает быстрее для таблиц.
  2. Ячейки перебирать нужно во всей таблице, а не только в интересующем нас столбце. Это вызвано тем, что в таблице присутствуют ячейки, объединённые по столбцам и доступ к отдельным столбцам отсутствует. Именно поэтому, чтобы определить в нужном ли столбце находится текущая ячейка, я пользуюсь свойством ColumnIndex, сравнивая его с номером требуемого столбца. В моём случае это последний столбец таблицы. Также хочу обратить внимание, что я записал количество столбцов в отдельную пере- менную, чтобы не вычислять его каждый раз при сравнении.
  3. Установка табуляции в ячейке таблицы имеет свои особенности.

Например, в этом случае табуляция проставилась: - как видно, позиция табуляции находится чуть дальше 16,5 см, если верить линейке, но, если вызывать окно табуляции для данного абзаца, то там будет стоять цифра 1,62 см. Это вызвано тем, что позиция табуляции отсчитывается не от начала страницы, как можно подумать, глядя на линейку, а от начала текста, который этой табуляцией выравнивается. Поэтому в коде позицию табуляции я вычисляю по ширине ячейки (строка 19).

Из полезного, хочу отметить оператор DoEvents, который временно передаёт управление приложению, чтобы оно выполнило накопившиеся задачи и дало знать операционной системе, что всё в порядке. Этот оператор очень хорошо показывает себя именно в таких циклах, где перебор осуществляется внутри больших коллекций элементов.
Макрос сэкономил мне массу времени, но его можно усовершенствовать: добавить диалог ввода номера(ов) столбца(ов), в ячейки которого(ых) нужно обработать. Также, если передавать его неискушённому пользователю, следует предусмотреть проверку, что курсор находится в таблице.
И напоследок. Как быть, если нужно установить позицию табуляции не посередине ячейки, а в другом её месте? Как вычислить это место внутри ячейки? Прежде всего, нужно это место записать в переменную типа Range, а затем, используя метод Range.Information(wdHorizontalPositionRelativeToTextBoundary), получить положение этого диапазона относительно текста ячейки
колонтитулы в word 2007, 000000211111

Рекомендуем в повседневной деятельности:

Скачать - инструкцию по созданию загрузочной флешки = 50,02мин. 20.04.2014г.
Скачать - правила получение аттестата Webmoney  (30.61 MB) = 7. 5 мин. 11.01.2013г.
Скачать ссылки на каталоги - для регистрации сайта (69.5 MB) = 9. 7 мин. 01.10.2013г.
Скачать - wifi router настройка модема (41.72 MB) = 7 мин. 46 сек. 26.01.2013г.
Скачать - TDSSKiller диагностика, лечение систем (24,71 MB) = 6,02 мин. 01.12.2012г.
Скачать - пример готового проэкта в Lazarus (91,59 MB) = 1,31мин. 08.04.2013г.
Скачать - правила установки MySQL в Lazarus (20,17 MB) = 4,55 мин. 25.02.2013г.
Класс!

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

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

Запись макросов для любых Windows-программ

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

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

Яндекс.Метрика
Копирование возможно при указании прямой индексируемой гиперссылки
п»ї
0000002