Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Ивличев П.С. Практикум по информационным технологиям. Ч. 10 Автоматизация работы

.pdf
Скачиваний:
17
Добавлен:
07.01.2021
Размер:
874.47 Кб
Скачать

Часть 1

11

В языке VBA реализована концепция объектно-ориентированного программирования.

Объект – это именованная совокупность:

свойств – именованных структур данных, характерных для этого

объекта;

методов – подпрограмм изменения свойств, ассоциированных с

объектом;

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

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

Имя_объекта.Свойство Имя_объекта.Метод

Свойства объекта можно изменить в программном коде с помощью оператора присваивания. Синтаксис оператора имеет вид

Имя_объекта.Свойство = Значение

Рассмотрите рисунок 4. В первой строке процедуры создается объект Selection (выделенный текст или один курсор). Метод WholeStory, примененный к объекту Selection, позволяет выделить весь документ.

Конструкция With … End With служит для сокращения записи при работе с одним и тем же объектом. Все свойства, которые прописаны внутри операторных скобок With … End With, относятся к этому объекту (в нашем случае это объект Selection).

Группа свойств Font объекта Selection обозначает шрифт, группа свойств ParagraphFormat – параметры абзаца.

2.Приведите код своего макроса Макрос1_Format_Text в редакторе VBA к виду, показанному на рисунке 4. Основываясь на полученных сведениях и действиях, выполненных при записи макроса, определите значение каждой строки в коде макроса.

3.Добавьте к программному коду оператор

Selection.ParagraphFormat.LineSpacing = LinesToPoints(1.5)

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

4.После редактирования кода проверьте правильность его работы,

запустив макрос из окна редактора нажатием на кнопку Run Sub панели инструментов. Закройте окно редактора, проанализируйте изменения в документе. Верните документу первоначальный вид.

Часть 1

12

5. Измените код макроса Макрос1_Format_Text так, чтобы выполняемое им форматирование применялось не ко всему документу, а только к выделенной части. Для этого из кода макроса следует удалить оператор, выполняющий выделение всего документа. (Вместо удаления строки кода лучше закомментировать ее, поставив перед ней апостроф ‘ – комментарии игнорируются транслятором при выполнении программы.) Проверьте правильность работы макроса, выделив перед его запуском основной текст ра-

порта (Довожу до вашего сведения … зарегистрированы в КУСП).

6. Откройте окно редактора VBA. Скопируйте полностью код макроса Макрос1_Format_Text и вставьте его на новую строку рабочей области редактора. Переименуйте скопированную процедуру, дав ей имя Макрос2_Format_Text. Измените код макроса так, чтобы при форматировании выделенной части документа устанавливалось выравнивание абзаца по левому краю (wdAlignParagraphLeft), междустрочный интервал – одинарный, отступ первой строки – отсутствует (0). Проверьте правильность работы макроса, выделив предварительно абзац со словом РАПОРТ. Отмените действия, выполненные макросом.

Задание 7. Назначение макросу кнопки панели быстрого доступа Для назначения макросу кнопки панели инструментов необходимо 1 При создании макроса в диалоговом окне Запись макроса, при-

веденном на рисунке 2, после установки необходимых параметров, в раз-

деле Назначить макрос щелкнуть на кнопке кнопке .

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

3В поле Настройка панели быстрого доступа указать свой до-

кумент.

4Щелчком на кнопке добавить необходимый объект в правое окно.

5Щелкнуть на кнопку Изменить и выбрать пиктограмму и имя

новой кнопки.

6Нажать кнопку OK.

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

1.Рассмотрите рисунок 7.

2.С помощью рекордера создайте макрос Мак-

рос3_Insert_Tables_None, который вставляет в место положения курсора таблицу из двух столбцов и одной строки для последующей вставки в нее адресования и подписи документа. Границы у таблицы сделайте невидимыми.

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

Часть 1

13

При записи макроса обратите внимание, что выделение таблицы щелчком мыши не записывается в макрос, поэтому ячейки следует выделять, используя комбинации клавиши Shift и клавиш управления курсором → ←↑ ↓.

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

Рисунок 5 – Назначение макросу кнопки панели быстрого доступа

4.Просмотрите код записанного макроса в редакторе VBA. Проанализируйте код, представленный на рисунке 6. Для адекватной работы макроса его вполне достаточно. Объясните назначение каждой команды, учитывая, что объект Selection означает выделенную область.

5.Приведите код макроса Макрос3_Insert_Tables_None к виду, представленному на рисунке 6.

6.Проверьте правильность работы отредактированного кода, вставив с его помощью в первый и последний абзацы документа таблицы (при этом удобно вывести на экран одновременно окно редактора VBA и окно документа, а макрос запускать из окна редактора).

Часть 1

14

Рисунок 6 – Примерный код макроса Макрос3_Insert_Tables_None

7. Используя макрос Hat, создайте адресование документа. Вручную введите текст подписи документа согласно рисунку 7. Отформатируйте абзацы в таблицах с использованием макроса Макрос2_Format_Text. Придав в итоге документу Рапорт.docm вид, показанный на рисунке 7, сохраните изменения в документе.

Рисунок 7 – Вид документа Рапорт.docm с таблицами

8. Откройте окно редактора VBA. Скопируйте полностью код макроса Макрос3_Insert_Tables_None и вставьте его на новую строку рабочей области редактора. Переименуйте скопированную процедуру, дав ей имя Макрос4_Insert_Tables_Single. Измените код макроса так, чтобы вставляемая таблица имела тонкие границы. Для этого значения соответствующих свойств надо установить равными wdLineStyleSingle. Проверьте правильность работы макроса. Отмените действия, выполненные макросом.

Часть 1

15

9. Назначьте макросу Макрос4_Insert_Tables_Single кноп-

ку панели быстрого доступа. Для этого с помощью команды Файл – Параметры – Панель быстрого доступа перейдите в окно, показанное на рисунке 5, в списке Выбрать команду из укажите Макросы и следуйте уже знакомым инструкциям. Убедитесь, что настройки будут применены только к текущему документу Рапорт.docm. Проверьте работоспособность кнопки, отмените изменения в документе.

Часть 2

16

Часть 2. Основы программирования на языке

Visual Basic for Application

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

Рассмотрим основные понятия и синтаксис языка VBA.

Алгоритм – последовательность предписаний исполнителю, применяемых по строго определенным правилам, которая приводит к решению поставленной задачи.

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

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

Dim имя_переменной As тип

Переменные могут иметь, в частности, один из типов, представленных в таблице 1.

Таблица 1 – Типы переменных в VBA

Тип

Содержимое

Объем памяти,

Диапазон возможных

байт

значений

 

 

Integer

Целые числа

2

[-215; 215-1]

Single

Вещественные числа

4

[-2128;-2-149] и

одинарной точности

[2-149; 2128-1]

String

Текст

1 для каждого

До 231 символов для

символа

динамических строк

 

 

Boolean

Логические значения

2

[True, False]

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

имя_переменной = значение

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

В тексте программы на языке VBA можно обратиться к любому объекту документа (таблице (tables), абзацу (paragraphs), символу...). Работа с объектами производится с использованием их свойств и методов.

На рисунке 8 показано, как в программе на языке VBA обратиться к содержимому ячейки таблицы в Word. Указанный объект имеет тип String.

Часть 2

17

Содержимое ячейки второй строки третьего столбца пятой таблицы выделенной области

Selection.Tables.(5).Cell(2, 3).Range.Text

Выделенная

Пятая

Ячейка

Содержимое

область

таблица

второй строки

ячейки

 

выделения

третьего столбца

 

Рисунок 8 – Обращение к ячейке таблицы в VBA

Задание 8. Элементарные приемы работы с объектами документа

1.Рассмотрите рисунок 9.

2.Откройте в редакторе код макроса

Макрос4_Insert_Tables_Single.

Рисунок 9 – Вид файла Рапорт.docm со вставленной таблицей

3. Измените в программном коде форматирование шапки таблицы, установив в ней выравнивание по центру, одинарный междустрочный интервал и жирное начертание шрифта. При написании кода учтем, что строка

Часть 2

18

таблицы уже выделена (то есть, уже определен объект Selection). При работе пользуйтесь подсказками средства автоматизации ввода.

Selection.Paragraphs.Alignment = wdAlignParagraphCenter Selection.ParagraphFormat.LineSpacing = LinesToPoints(1) Selection.Font.Bold = True

4.Введите текст в первую ячейку таблицы.

Selection.Tables(1).Cell(1, 1).Range.Text = "Дата"

5.Введите с помощью макроса текст во вторую ячейку таблицы.

6.Добавьте к таблице новую строку.

Selection.InsertRowsBelow 1

7.Вставленная строка при этом выделена. В выделенной области отмените полужирное начертание шрифта (False), установите выравнивание абзацев по левому краю.

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

Задание 9. Организация диалога с пользователем Для стандартного ввода данных пользователем используется функция

InputBox(), отображающая диалоговое окно с полем ввода. Эта функция имеет следующий синтаксис

имя_переменной=InputBox(“Текст сообщения”,“Текст заголовка окна”)

Окно ввода, отображаемое функцией InputBox(), представлено на рисунке 10.

Рисунок 10 – Окно ввода функции InputBox()

1.Дополните код макроса Макрос4_Insert_Tables_Single

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

Selection.Tables(1).Cell(2, 1).Range.Text = InputBox("Введите дату", "Дата")

2.Дополните код макроса Макрос4_Insert_Tables_Single

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

Часть 2

19

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

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

MsgBox “Текст сообщения”, Параметр значка, “Текст заголовка окна”

4. Дополните код макроса Макрос4_Insert_Tables_Single

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

Рисунок 11 – Окно сообщений, выводимое функцией MsgBox()

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

Задание 10. Оператор цикла

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

Циклическим вычислительным процессом (циклом) называется вычислительный процесс, в котором некоторая последовательность действий, называемая телом цикла, многократно повторяется с различными исходными данными.

Цикл с предусловием «Пока»

Вход

Нет

Условие

Да

Тело цикла

Выход

Do While условие операторы тела цикла

Loop

Изменим код макроса Макрос4_Insert_Tables_Single так, чтобы ввод данных в таблицу повторялся до тех пор, пока пользователь не нажал кнопку Сancel в окне ввода. При нажатии на эту кнопку в программу

Часть 2

20

возвращается пустая строка “”, что можно использовать для прекращения создания таблицы.

1. Измените код макроса Макрос4_Insert_Tables_Single

так, чтобы создание новой строки таблицы не осуществлялось, если пользователь нажал кнопку Cancel. Примерный вариант программного кода показан ниже. Заметьте, что в коде использованы две строковые переменные x и y, хранящие значения, введенные пользователем с клавиатуры. Проанализируйте представленный фрагмент алгоритма, измените код макроса Мак-

рос4_Insert_Tables_Single соответствующим образом.

Dim i As Integer, x As String, y As String i = 1

x= InputBox("Введите дату", "Дата")

y= InputBox("Введите количество происшествий", "Количество происшествий")

Do While x <> "" And y <> "" ‘проверка того, что пользователь в оба окна ввел непустое

значение или не нажал Cancel

i = i + 1 Selection.InsertRowsBelow 1 Selection.Font.Bold = False

Selection.Paragraphs.Alignment = wdAlignParagraphLeft Selection.Tables(1).Cell(i, 1).Range.Text = x Selection.Tables(1).Cell(i, 2).Range.Text = y

x= InputBox("Введите дату", "Дата")

y= InputBox("Введите количество происшествий", "Количество происше-

ствий")

Loop

2.Проверьте правильность работы макроса, введя в таблицу данные, представленные на рисунке 9. При необходимости отладьте код. Сохраните изменения в документе.

Задание 11. Базовый алгоритм накопления суммы Рассчитаем общее количество происшествий, указанных в рапорте,

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

1.Изучите схему алгоритма, представленную на рисунке 12. Обратите внимание, что переменная n хранит количество строк в таблице, в переменной s накапливается сумма, переменная i означает номер текущей строки таблицы.

2.Измените код макроса Макрос4_Insert_Tables_Single

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]