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

Автоматизация процесса создания офисных документов. Учебное пособие

.pdf
Скачиваний:
0
Добавлен:
07.09.2026
Размер:
2 Мб
Скачать
В данном примере переменная N увеличивается на 1 в конце каждого цикла. Когда переменная N достигает значение, равное 10, в вызываемом с помощью оператора MsgBox диалоговом окне операционной системы компьютера появля­ется результат. Заданием параметра Step можно изменить эту величину. В следу­ющем примере переменная N увеличивается на 2 в конце каждого цикла.
For N = 1 То 10 Step 2
result = N * N
MsgBox N & " в квадрате = " & result
Next
5.3.2 Циклы типа Do… Loop
Цикл Do, содержащий ключевое слово While, выполняется до тех пор, пока проверяемое условие истинно. Проверять это условие можно в начале цикла
Do While Условие
Блок операторов
Loop
или в конце цикла:
Do
Блок операторов
Loop While Условие
Разница между этими способами заключается в том, что первый может никогда не выполнить содержащиеся в нем команды, а второй выполнит их как минимум один раз.
Цикл Do, содержащий ключевое слово Until, выполняется до тех пор, пока проверяемое условие ложно. Как и в структуре Do... While, можно поставить условие в начале цикла
Do Until Условие
Блок операторов
Loop
или в конце цикла:
Do
Блок операторов
Loop Until Условие
5.3.3 Циклы типа For… Each
Оператор цикла For…Each служит для выполнения блока операторов для каждого элемента массива.
41
Предположим, что необходимо найти сумму элементов массива, диапазон изменения индексов которого может изменяться в процессе выполнения программы. В этом случае рассмотренные выше циклы не подходят, а цикл For…Each справляется с решением подобной задачи.
Синтаксис оператора цикла For…Each имеет вид:
For Each Элемент In Группа
Блок операторов
Next [Элемент]
Ниже приведен пример применения цикла For…Each для суммирования в процедуре proc1() элементов динамического массива, размерность которого объявляется в процедуре proc2() и там же задаются значения элементов массива:
Public Массив() As Currency
Sub proc1()
Dim Элемент
Сумма = 0
For Each Элемент In Массив
Сумма = Сумма + Элемент
Next
MsgBox Сумма
End Sub
Sub proc2()
ReDim Массив(1 To 4) As Currency
For I = 1 To 4
Массив(I) = 999.99 * I
Next
End Sub
5.4 Задания для самопроверки
1. Разработать в VBA программу «Выбор1». Программу разработать в MS
Excel. Программный код может выглядеть следующим образом:
Sub Выбор1( )
Dim X As Byte
X=12
If (X>9 And X<12) Then X=X+1
X=X*2
End Sub
42
Написать пояснения к программному коду.
2. Разработать в VBA программу «Корни», представляющую собой реше-
ние квадратного уравнения ах2 + bx + c = 0, для нахождения действительных корней. Программу разработать в MS Excel. Для нахождения корней использо­вать соотношения:
Если d= b2 – 4ac 0, то x1 =(-b+Y)/2a, x2=(-b-Y)/2a, где Y=d
1/2
, в противном случае решения нет.
Написать пояснения к программному коду.
3. Разработать в VBA программу «Выбор2». Программу разработать в MS
Excel. Программный код может выглядеть следующим образом:
Sub Выбор2( ) Dim x As Integer
x=1
Select Case 2*x+1
Case 1
x=x+1
Case 2,3,4
x=10
Case Else
х=20
End Select
x=x *2
End Sub
Написать пояснения к программному коду.
4. Разработать в VBA программу «Выбор3». Программу разработать в MS
Excel, с использованием стандартных окон MS Windows по аналогии с про-
граммой «Выбор2».
Написать пояснения к программному коду.
5. Создать в VBA программу «Месяц года». Программу разработать в MS
Excel, с использованием стандартных окон MS Windows. При вводе в текстовое
поле стандартного окна ввода данных номер месяца года, в окне вывода должно появляться слово, обозначающее месяц года, соответствующий этому номеру. При написании программного кода использовать конструкцию «Select Case».
43
6. Создать в VBA программу, вычисляющую факториал числа 25!
(n!=1·2·3….·n), используя цикл For…Next.
7. Создать в VBA программу, вычисляющую факториал числа 25!, ис-
пользуя циклы Do… Loop.
6. Объекты VBA
6.1 Особенности языка VBA
Элементы языка VBA, рассмотренные в предыдущем разделе, относятся к обычным (традиционным) средствам процедурных языков и составляют ядро VBA. Однако язык VBA, как было сказано выше, относится к классу объектно­ориентированных языков (его также называют событийно-ориентированным языком программирования), поэтому можно говорить о как бы надстройке над ядром VBA – объектном языке VBA [6].
Объектный язык VBA – это совокупность средств, позволяющих работать в приложениях с объектами.
Для каждого приложения, входящего в состав MS Office, главным является объект-приложение. Например, для каждого из приложений MS Word, MS Access и MS Excel главным является объект-приложение соответственно Word.Application, Access.Application и Excel.Application. Все остальные объекты каждого из указанных приложений встроены в него и являются его элементами.
Каждый объект принадлежит некоторому классу [7]. Класс можно рассматривать как шаблон, на основе которого во время выполнения программы создается объект. Отношение между объектом и его классом такое же, как и между переменной и ее типом.
6.2 Свойства объектов
Каждый объект характеризуется своими свойствами, которые имеют имена и значения. Чтобы задать значение свойства, следует указать объект и имя свойства, применив в качестве разделителя точку. Затем после знака равенства необходимо указать значение свойства:
Объект.Свойство = ЗначениеСвойства
6.3 Методы объектов
Методы определяют поведение объекта. Другими словами, методы – это процедуры и функции, встроенные в объект. Чтобы вызвать такую процедуру, указывается объект и через точку метод:
44
Объект.Метод
Если метод исполняет роль функции, то он может возвращать значение и, следовательно, возвращаемое значение можно присвоить переменной:
Переменная = Объект.Метод
6.4 События объектов
События – это некоторые действия, инициируемые выполнением программного кода или непосредственно пользователем. Примерами могут служить такие действия: открытие диалогового окна, щелчок мышью на кнопке, нажатие клавиши и т.п.
В момент возникновения события для заданного объекта активизируется определенный метод объекта, или, как еще говорят, запускается процедура обработки события.
6.5 Объекты MS Office
Как было сказано выше, для каждого приложения, входящего в состав MS Office, главным является объект-приложение. В частности, для приложения MS Excel главным является Excel.Application. Все остальные объекты встроены в
объект Excel.Application и являются его элементами.
Из редактора VBA можно вызвать окно просмотра объектов MS Word, MS Excel, MS Access и т.д.
Рассмотрим вызов окна просмотра объектов для MS Excel, для остальных приложений вызов окна просмотра объектов осуществляется аналогичным об-
разом. Для этого достаточно щелкнуть на кнопке Object Browser (про­смотр объектов) или нажать на клавиатуре компьютера клавишу F2. После вы­полнения этих действий откроется окно просмотра объектов, представленное на рисунке 6.1.
В окне просмотра объектов (рис. 6.1) в левом верхнем углу расположен раскрывающийся список библиотек, доступных из приложения MS Excel. В окне Classes дан список встроенных объектов, сформированный для выбранного приложения или библиотеки. При выделении какого-либо объекта в этом списке, в окне Members of Application отображаются элементы этого объекта – свойства, методы, события, по которым можно быстро получить
справку, щелкнув на кнопке . В нижней части окна отображаются краткие сведения о выбранном элементе. Ссылки, которые составляют часть этих сведений, позволяют получить дополнительную информацию по выбранному элементу.
45
Рис. 6.1. Окно просмотра объектов Excel
В окне просмотра объектов (рис. 6.1) выделен объект Application и его элемент ActiveCell. Перед словом ActiveCell в окне Members виден значок ,
указывающий на то, что элемент ActiveCell является свойством объекта Application. Таким образом, если мы хотим обратиться к выделенной ячейке выделенного листа активной книги работающего приложения MS Excel, то в программе следует записать выражение Application.ActiveCell.
В свою очередь, элемент ActiveCell является объектом, встроенным в объект Application и обладает также множеством своих свойств и методов. Одним из таких свойств является свойство Address. Его можно рассматривать как объект, который можно встроить в объект ActiveCell. В таком случае выражение Application.ActiveCell.Address может быть интерпретировано как адрес выделенной ячейки приложения MS Excel.
В некоторых случаях, когда свойства или методы объекта Application являются глобальными, спецификатор Application разрешается опускать. Например, к адресу выделенной ячейки можно обратиться с помощью выражения ActiveCell.Address.
Рассмотрим в этом разделе, для примера, важный объект MS Excel объект Range, который представляет собой диапазон ячеек. Например, объект Range("A1:F9") указывает на диапазон ячеек A1:F9. В частном случае он
может представлять единственную ячейку. Например, Range("A1") представляет ячейку A1 активного листа активной рабочей книги.
46
Следующий программный код запишет в ячейку A1 активного листа активной рабочей книги слово Excel.
Range("A1") = "Excel"
К тому же самому результату приведет и выполнение кода:
Range("A1").Value = "Excel",
в котором в явном виде указано свойство Value (значение ячейки) объекта Range.
Для того чтобы записать значение в ячейку некоторого листа (не обязательного активного в данный момент) активной рабочей книги, можно использовать ссылку на конкретный лист:
Range("Лист2!A1").Value = "Excel"
Для записи формулы в ячейку (диапазон ячеек) используется свойство Formula:
Range("A1").Formula = "=A1+A2"
В формулах рекомендуется использовать для адресации формат R1C1. В нем адрес задается номером строки и индексом столбца. Формула =A1+A2 в представленном выше выражении при использовании формата R1C1 примет вид: =R1C1+R2C1.
Свойство Offset объекта Range обеспечивает переход к ячейке, отстоящей от выделенной ячейки на определенное число строк и столбцов.
В качестве иллюстрации этого свойства приведем программный код, записывающий числа натурального ряда от 1 до 9 в пятый столбец, начиная с первой строки:
For K = 1 To 9
Range("E1").Offset(K – 1, 0).Select
ActiveCell.Value = K
Next K
Метод Select объекта Range выделяет ячейку (диапазон ячеек) и одновременно порождает объект Selection.
В последней процедуре вместо выражения ActiveCell.Value = K можно с тем же успехом использовать выражение Selection.Value = K
Пример, представленный ниже, иллюстрирует выделение ячейки A5 с последующим форматированием выделенной ячейки.
Range("A5").Select
Selection.Font.Name = "Arial Cyr"
Selection.Font.FontStyle = "курсив"
47
Selection.Font.Size = 14
Часто для сокращения текста программного кода используется конструкция With … End With:
With Selection.Font
.Name = "Arial Cyr" .FontStyle = "курсив" .Font.Size = 14
End With
6.6 Задания для самопроверки
1. Для приложения MS Word укажите объект-приложение, которое
является главным, и укажите число его свойств, опишите часть этих свойств.
2. Для приложения MS Access укажите объект-приложение, которое
является главным, и укажите число его свойств, опишите часть этих свойств.
3. Для приложения MS Excel укажите объект-приложение, которое
является главным, и укажите число его свойств, опишите часть этих свойств.
4. Дайте определение метода объекта, приведите примеры методов объек-
тов в MS Word.
5. Приведите примеры методов объектов в MS Access.
6. Приведите примеры методов объектов в MS Excel.
7. Дайте определение классов объектов.
8. Ответьте на вопрос и представьте его в письменной форме. Обладают
ли объекты языка VBA такими свойствами как: полиморфизм, инкапсуляция, наследование.
7. Автоматизация создания офисных документов
средствами VBA
7.1 Эффективность создаваемых процедур в VBA
Создание макросов с помощью макрорекордера для автоматизации неко­торых операций при работе с офисными документами в ряде случаев приводит к желаемым результатам. Однако техника создания макросов в MS Office не позволяет непосредственно при записи макроса использовать условные перехо­ды, циклы и другие эффективные инструменты VBA. В целях повышения эф­фективности создаваемых процедур весьма продуктивным представляется сов­местное использование преимуществ макрорекордера и доработка полученных макросов с использованием операторов VBA. Рассмотрим некоторые инстру­менты и элементарные процедуры, используемые для автоматизации офисных документов на примере использования MS Office Excel 2007.
48
Для создания автоматизированных документов широко используются элементы управления. Они служат в основном для упрощения ввода данных, делают ввод более наглядным и производительным.
7.2 Элементы управления формы
Существует два типа элементов управления:
элементы управления рабочего листа;
элементы управления диалогового окна.
Элементы управления рабочего листа более просты в использовании, но имеют меньше возможностей, в частности, в их состав не входят поля ввода.
Для использования элементов управления рабочего листа следует перей­ти на ленту Разработчик и нажать на кнопку Вставить элемент управления, по­ле этого на экране монитора компьютера появится панель Элементов управле­ния формы, которая представлена на рисунке 7.1.
Рис. 7.1. Панель Элементов управления формы
В нижеследующей таблице даны названия и дано описание назначения каждого из Элементов управления формы.
Элемент Название Описание действия элемента
Подпись Служит для ввода символьной строки
Группа
Кнопка Инициирует запуск процедур и функций
Флажок
Переключатель
Список Служит для выбора элемента списка
Поле со списком Служит для выбора элемента из раскрывающегося списка
Полоса прокрутки
Счетчик
Используется для объединения в группу флажков или пе­реключателей
Используется в группе для выбора одного или несколь­ких вариантов
Используется в группе для выбора только одного из не­скольких вариантов
Позволяет изменять некоторое значение в заданных пре­делах Увеличивает или уменьшает некоторое значение на уста­новленную величину в зависимости от того по стрелке
«Верх» или по стрелке «Вниз» сделан щелчок мыши
49
Для размещения элемента управления на рабочем листе необходимо выполнить следующие действия:
щелкнуть левой кнопкой мыши по значку нужного инструмента на
панели Элементов управления формы (рис. 7.1);
перенести указатель мыши (теперь в форме крестика) в точку на рабочем листе, где должен находиться левый верхний угол вставляемого элемента управления и щелкнуть левой кнопкой мыши;
– с помощью маркеров, распределенных по периметру выделенного элемента
управления, установить левой кнопкой мыши требуемые размеры элемента.
Для задания свойств установленного элемента управления используется правая кнопка мыши. Щелчок на элементе управления вызывает контекстное меню, в котором выбор пункта Формат объекта, в свою очередь, выводит на экран диалоговое окно Формат элемента управления (рис. 7.2), где и устанавливаются необходимые свойства.
В ячейку листа рабочей книги MS Excel значения могут передавать следующие элементы управления:
Флажок;
Переключатель;
Список;
Поле со списком;
Полоса прокрутки;
Счетчик.
На рисунке 7.2 показано диалоговое окно Формат элемента управления, в котором устанавливаются свойства одиночного элемента управления Флажок.
Рис. 7.2. Диалоговое окно Формат элемента управления
50
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]