Командные макросы

advertisement
ННГУ им. Н.И. Лобачевского
МАКРОСЫ
В MS OFFICE

КУЗЕНКОВА Г.В.
VISUAL BASIC
FOR APPLICATION
Основным средством разработки приложений в MS Office
является комплексное решение на основе языка Visual Basic,
а именно – Visual Basic for Application (VBA).
Эта технология включает:
• макрорекордер,
• интерпретатор Visual Basic,
• интегрированную среду разработки с встроенным
отладчиком,
• библиотеки времени выполнения (runtime library),
2
• библиотеки типов, представляющие объекты пакета.
ОПРЕДЕЛЕНИЯ
Термин макрос (macro) произошел от греческого
слова, означающего расширенный или растянутый.
3
Макрос – это программа (в контексте офисного
программирования - созданная автоматически),
состоящая из списка команд, которые должны быть
выполнены приложением.
ВИДЫ МАКРОСОВ
1. Командные макросы.
2. Пользовательские функции.
4
3. Макрофункции.
КОМАНДНЫЕ МАКРОСЫ
Командные макросы – это наиболее
распространенные макросы, обычно состоящие из
операторов, эквивалентным тем или иным
командам меню или параметрам диалоговых окон.
5
Назначение:
выполнение действий, аналогичных командам
меню – т.е. изменение окружения и основных
объектов приложения.
ПОЛЬЗОВАТЕЛЬСКИЕ
ФУНКЦИИ
Пользовательские функции – работают аналогично
встроенным функциям приложения.
6
Отличие этих функций от командных макросов состоит
в том, что они используют значения передаваемых им
аргументов, производят некоторые вычисления и
возвращают результат в точку вызова, но не изменяют
среды приложения.
МАКРОФУНКЦИИ
Макрофункции – представляют собой сочетание
командных макросов и пользовательских функций.
Они могут использовать аргументы и возвращать
результат, подобно пользовательским функциям, а
также могут изменять среду приложения, как и
командные макросы.
7
Чаще всего эти макросы вызываются из других
макросов, и активно используются для модульного
программирования.
СПОСОБЫ РАЗРАБОТКИ
МАКРОСА
Различают 2 способа разработки макроса:
• автоматическое создание, с использованием
макрорекордера;
• написание макроса «с нуля», используя язык
программирования VBA.
8
Комбинированный подход:
фрагменты будущей программы записываются
автоматически, а затем они корректируются и
дополняются «рукописным» кодом.
МАКРОРЕКОРДЕР
Макрорекордер (рекордер) – это средство записи
действий пользователя с одновременным
переводом их в программный код языка VBA.
Макрорекордер – это встроенный инструмент,
который фиксирует все действия пользователя,
включая ошибки и неправильные запуски.
9
При выполнении макроса интерпретируется каждая
записанная макрорекордером команда точно в
такой последовательности, в которой
пользователь выполнял их во время записи.
МОДУЛИ
Макросы, создаваемые макрорекордером MS
Office, сохраняются в специальной части файла
данных, называемой модулем.
Модуль VBA содержит исходный код программы на
языке VBA.
В VBA существуют процедуры-подпрограммы
Subprogram и процедуры-функции Function.
Фактически макрос является подпрограммой VBA.
10
Записанный макрос имеет строго определенную
структуру.
РЕДАКТОР КОДА VBE
11
Visual Basic Editor (VBE) – это редактор Visual Basic,
который представляет из себя компонент для
создания, просмотра и редактирования как новых
так и существующих модулей, содержащих
программный код макросов и пользовательских
форм.
СИНТАКСИЧЕСКИЕ
ПРИНЦИПЫ VBA
12
Основные синтаксические принципы этого языка:
• VBA нечувствителен к регистру;
• чтобы закомментировать код до конца строки,
используется одинарная кавычка ( ') или команда REM;
• символьные значения должны заключаться в двойные
кавычки;
• максимальная длина любого имени в VBA
(переменные, константы, процедуры) — 255 символов;
• начало нового оператора — перевод на новую строку;
• ограничений на максимальную длину строки нет (хотя
в редакторе умещается только 308 символов).
• Несколько операторов в одной строке разделяются
двоеточиями.
СТРУКТУРА МАКРОСА
В общем виде структуру кода макроса можно
представить следующим образом:
Sub имяМакроса () ' текст комментария
Оператор1 Оператор2 ...
ОператорN
End Sub
Каждый макрос VBA начинается с ключевого слова
Sub, за которым следует имя макроса.
13
Строку, содержащую ключевое слово Sub и имя
макроса, называют строкой объявления
(declaration) макроса.
СТРУКТУРА МАКРОСА
Sub имяМакроса () ' текст комментария
Оператор1
Оператор2 ...
ОператорN
End Sub
За именем макроса всегда следуют
пустые круглые скобки
(т.к. макрос является процедурой
VBA без параметров).
Апостроф дает возможность добавить пояснения в любом месте
вашей программы. Все, что расположено после него до символа
перевода строки не воспринимается транслятором языка.
14
Строки комментариев.
Комментарий (comment) – это строка в макросе VBA,
которая не содержит инструкций, являющихся частью этого
макроса.
Каждая строка комментария начинается с символа
апострофа ( ' ).
ТЕЛО МАКРОСА (BODY)
Каждая строка в теле макроса состоит из одного
или более операторов VBA.
Оператор VBA (statement) – это
последовательность ключевых слов и других
символов, которые вместе составляют одну полную
инструкцию для VBA.
Макрос VBA состоит из одного или нескольких
операторов.
15
Завершает тело макроса ключевая строка:
End Sub
ПРАВИЛА ЗАПИСИ
ОПЕРАТОРОВ
• Каждый новый оператор записывается с новой
строки.
• Чтобы записать несколько операторов на одной
строке, их разделяют между собой двоеточием
(:).
16
• Если оператор не помещается в одной строке, то
необходимо поставить в конце строки пробел и
знак подчеркивания ( _), а затем продолжить не
поместившуюся часть на следующей строке.
• Объект – это программный элемент, который имеет
свое отображение на экране.
Он имеет некоторые переменные, определяющие его
свойства.
Есть некоторые методы для управления объектом
(то, что с ним можно сделать).
Синтаксис установки значения свойства объекта
следующий:
• Объект. Свойство = Выражение
Синтаксис чтения свойств объекта следующий:
• Переменная = Объект. Свойство
Синтаксис применения методов к объекту:
• Объект. Метод
17
ОБЪЕКТЫ, СВОЙСТВА
И МЕТОДЫ VBA
ПРИМЕР МАКРОСА
Sub Hello() ' Макрос изменяет размер, начертание
шрифта, выравнивание абзаца и ' выводит
надпись в активный документ MS Word
Selection.Font.Size = 24
Selection.Font.Bold = wdToggle
Selection.ParagraphFormat.Alignment =
wdAlignParagraphCenter
Selection.TypeText Text:="Hello, World!"
End Sub
18
Пример 2
Sub tabdelete()
'убирает знак таб вначале абзаца
Selection.WholeStory
Selection.ParagraphFormat.Alignment =
wdAlignParagraphCenter
Selection.ParagraphFormat.Alignment =
wdAlignParagraphJustify
19
End Sub
20
КАК ЗАПИСАТЬ МАКРОС?
ДИАЛОГОВОЕ ОКНО
ЗАПИСИ МАКРОСА
• Местом хранения
может быть сам
файл документа
или глобальный
шаблон Normal.dot
Комментарии содержат имя макроса и текст, который был введен
пользователем в текстовое поле «Описание» («Description») диалогового окна
«Запись макроса» («Record Macro») в момент записи этого макроса.
21
• Лучше макросы
хранить
отдельными
файлами
(модулями).
22
ВСЕ МАКРОСЫ
ЗАПИСАНЫ В ШАБЛОН
ЕСТЬ ОСОБЕННОСТИ
• При записи нового макроса допускается
применение мыши только для выбора команд и
параметров.
• Для записи таких действий, как выделение
текста, необходимо использовать клавиатуру.
• Подробную информацию можно найти по адресу:
http://office.microsoft.com/ru-ru/wordhelp/HA010096402.aspx?CTT=5&origin=HA010099
769
23
• Например, с помощью клавиши F8 можно
выделить текст, а с помощью клавиши END —
переместить курсор в конец строки.
СОХРАНЕНИЕ
МОДУЛЯ
24
• Одним из способов установки (сохранения) макросов на
компьютере является копирование программного кода и
его вставка с последующим сохранением в модуль
проекта редактора Visual Basic.
25
КАК СОХРАНИТЬ МАКРОС
В ОТДЕЛЬНОЙ ПАПКЕ?
КАК ДОБАВИТЬ МАКРОС
В ДОКУМЕНТ?
ЕСЛИ МАКРОС НЕ РАБОТАЕТ?
2003: Сервис/Макрос/Безопасность
26
Выбрать средний уровень (или низкий)
ОСНОВНЫЕ
ОБЪЕКТЫ WORD
• Ключевым в объектной модели Word является
объект Application:
27
• элементы на разных уровнях иерархии - около
180 объектов (сам корневой объект Application
имеет более сотни элементов: свойств, методов
и событий).
КЛАССЫ, ЗАДАЮЩИЕ
СТРУКТУРИЗАЦИЮ ТЕКСТА
ДОКУМЕНТА
• Минимальной единицей текста является символ.
Следующие единицы: слова, предложения,
абзацы, а также более крупные образования:
страницы, параграфы, главы.
28
• Классы Characters, Words, Statements,
Paragraphs, Sections позволяют работать с
последовательностями (коллекциями) символов,
слов, предложений, абзацев и разделов.
КЛАССА RANGE
Элементом коллекций Characters, Words
Statements является объект класса Range.
и
Объект Range позволяет работать как с одним
элементом,
так
и
с
произвольной
последовательностью элементов.
Документы, поддокументы, абзацы, разделы – все
они
имеют
метод
или
свойство
Range,
возвращающее интервал, связанный с объектом.
29
• Поэтому работа с текстом так или иначе
ведется через методы и свойства объекта
Range.
ОБЪЕКТЫ SELECTION
• При работе с текстом полезны следующие коды:
определение цвета
Selection.Font.Color = wdColorRed
определение начертания
Selection.Font.Bold = wdToggle
wdColorDarkRed – бордовый
wdColorDarkTeal – бирюзовый
wdColorBlue – синий
wdColorGreen – зеленый
wdColorBlack – черный
wdColorOrange – оранжевый
Selection.Font.Italic= wdToggle
определение выравнивания
Selection.ParagraphFormat.Alignment=
wdAlignParagraphCenter – выравнивание по центру
wdAlignParagraphJustify – выравнивание по ширине
30
wdAlignParagraphRight – выравнивание по правому краю
Вставка в текст конкретного предложения
Selection.TypeText Text:="Пример работы с текстом"
Вставка новой пустого абзаца
Selection.TypeParagraph
Установка размера символа
31
Selection.Font.Size = 14
With Selection.ParagraphFormat
.LeftIndent = CentimetersToPoints(0)
.RightIndent = CentimetersToPoints(0)
.SpaceBefore = 18
.SpaceBeforeAuto = False
.SpaceAfter = 18
.Alignment = wdAlignParagraphJustify
32
.FirstLineIndent = CentimetersToPoints(1.25)
33
Selection.Style =
ActiveDocument.Styles("Çàãîëîâîê 1")
With ActiveDocument.Styles("Çàãîëîâîê
1").Font
.Name = "Arial"
.Subscript = False
.Size = 12
.Scaling = 100
.Bold = True
.Kerning = 18
.Italic = False
.Animation = wdAnimationNone
.Underline = wdUnderlineNone
.Ligatures = wdLigaturesNone
.UnderlineColor = wdColorAutomatic
.NumberSpacing =
.StrikeThrough = False
wdNumberSpacingDefault
.DoubleStrikeThrough = False
.NumberForm =
.Outline = False
wdNumberFormDefault
.Emboss = False
.StylisticSet = wdStylisticSetDefault
.ContextualAlternates = 0
.Shadow = False
End With
.Hidden = False
.SmallCaps = False
.AllCaps = False
.Color = wdColorAutomatic
.Engrave = False
.Superscript = False
БОЛЕЕ ПОДРОБНО
О ПРИМЕНЕНИИ ЯЗЫКА VBA
http://library.fentu.ru/book/iriet/18/32___.html
http://www.askit.ru/custom/vba_office/m3/03_01_vba_syntax_
basics.htm\
http://dpivi.ru/104-3-osnovnye-operatory-yazyka-vba.html
http://dpivi.ru/96-2-osnovy-programmirovaniya-na-yazykevba.html
34
http://macros-vba.ru/articles/1-articles/62-kak-sohranit-kodmacrosa
Download