роботи: освоєння прийомів редагування макроса в середовищі додатків до Windows 95, налагодження, запуску та перевірки роботи макроса.
Редагування макроса відбувається в режимі редактора Visual Basic, який викликається командою Змінити у вікні Макрос. Під час редагування можна використовувати конструкції мови Visual Basic. З них найбільш вживаними є:
оголошення констант, які не змінюються в процесі роботи програми
Const ім’я_константи=значення
Приклад: Const Pi=3.1415926
оголошення простих змінних
Dim ім’я_змінної As тип_ змінної
Основними типами змінних є:
Integer – ціле число (наприклад, 238);
Long – велике ціле число;
Single – дійсне число (наприклад 45.50);
Date – дата (наприклад, 04.08.02);
Boolean – логічний (True або False);
String – рядок довжиною до 256 літер;
Variant – будь-який тип (програма сама визначає тип залежно від даних);
Object – об’єкт Visual Basic.
Приклад оголошення двох змінних: а – цілого типу і slovo – рядка літер та присвоєння їм значень у програмі:
Dim a As Integer, slovo As String
a=632: slovo=”Петренко П.П.”
розгалуження
If умовний_вираз Then інструкція
або
If умовний_вираз Then інструкція1 Else інструкція2 EndIf’
Приклад: введення числа та його аналіз
Dim oplata As Single, slovo As String
oplata = MsgBox(“Введіть число”, “Вивід результата аналізу”, “100”)
If oplata < 300 then slovo = ”мало” Else slovo = ”небагато”
MsgBox “Введено число: ” & oplata & “ Висновок: ” + slovo
цикл 1 (з регулярною зміною параметра)
For ім’я_змінної=початкове_значення To кінцеве_значення Step крок
тіло циклу
Next ім’я_змінної’
Приклад: видача чисел від 1 до 10
Dim i As Integer
For i=1 To 10
MsgBox “№ виконання циклу: ” & i
Next i
цикл 2 (ітераційного типу)
While умовний вираз
тіло циклу
Wend’
Приклад: видача чисел від 1 до 10
Dim i As Integer
i=0
While i < 11
i=i+1
MsgBox “№ виконання циклу: ” & i
Wend
ActiveDocument.Name – назва відкритого файлу (документа); ’
Приклад:
Dim ss As String
ss = ActiveDocument.Name
MsgBox “Назва відкритого документа: ” + ss
TypeName(посилання на об’єкт) – тип об’єкта;’
Приклад:
Dim ss As String
ss = TypeName(ActiveDocument)
MsgBox “Відкритий документ має тип: ” + ss
ActiveDocument.Characters.Count – кількість літер відкритого документа;’
Приклад:
Dim k As Long
k = ActiveDocument.Characters.Count
MsgBox “Кількість літер відкритого документа: ” & k
ActiveDocument.Words.Count – кількість слів відкритого документа;
ActiveDocument.Paragraphs.Count – кількість абзаців відкритого документа;
Set ім’я_змінної об’єктного типу – присвоєння змінній об’єкта (частини тексту, таблиці, малюнка MS Word, клітинки MS Excel, тощо);
ActiveDocument.Characters(i) – і-та літера відкритого документа;’
Приклад: вивести 16-ту літеру відкритого документа
Dim s As Range
Set s = ActiveDocument.Characters(16)
MsgBox “16-та літера документа: ” + s
ActiveDocument.Words(i) – текст і-го слова відкритого документа;
ActiveDocument.Sentences(i) – текст і-го речення відкритого документа;
ActiveDocument.Paragraphs(i).Range – текст і-го абзацу відкритого документа;
ActiveDocument.Range – увесь текст відкритого документа;
ActiveDocument.Range(m,n) – частина тексту відкритого документа, який знаходиться між літерами з порядковими номерами m+1 та n (діапазон m+1:n) від початку тексту;
ActiveDocument.Paragraphs(i).Range.Start – кількість літер від початку документа до початку і-го абзацу;
ActiveDocument.Paragraphs(i).Range.End – кількість літер від початку документа до кінця і-го абзацу;
ім’я.Select – виокремлення частини тексту, поіменованого командою Set;
Selection.Text – посилання на виокремлений фрагмент тексту;’
Приклад: виокремити 20-й абзац тексту і вивести його на екран
Dim s As Range, kusok as String
Set s = ActiveDocument.Paragraphs(20).Range
s.Select
kusok= Selection.Text
MsgBox “Виокремлений текст: ” + kusok
Лист1.Cells(k, i).Value – значення клітинки (рядок № k, стовпчик № i) листа1 у відкритій таблиці MS Excel.
3.3. Приклади задач
Приклад 1. Постановка задачі: виготовити макрос, який видає на екран порядкові номери і текст абзаців відкритого документа MS Word від першого до останнього. Передбачити можливість закінчення програми до завершення кінця документа.
Текст макроса має вигляд:
Rem Видача на екран абзаців тексту відкритого документа
Sub Макрос1()
Dim i As Integer, k As Integer, s As Range
k = ActiveDocument.Paragraphs.Count
i = 1
While i <= k
set s = ActiveDocument.Paragraphs(i).Range
rez = MsgBox(Str(i) + “ “ + s, vbOKCancel, “Читання абзаців відкритого документа”)
If rez = vbCancel Then GoTo mmm
i = i + 1
Wend
mmm: End Sub
При виготовленні цього макроса (заготовки до макроса) за допомогою макрорекордера ніякі операції над текстом не виконувалися. Як тільки появилося на екрані вікно Зупинити запис, була натиснена кнопка Зупинити запис цього вікна, тому використані лише ім’я та початок і кінець макроса.
У програмі оголошені три змінні, які використовуються для:
i – нумерації абцаців під час читання тексту;
k – підрахунку загальної кількості абзаців у документі;
s – запам’ятовування тексту чергового абзацу.
На початку програми підраховується кількість абзаців у тексті і це число присвоюється змінній k (k= ActiveDocument.Paragraphs.Count). Робиться це для того, щоб програма “знала” скільки разів їй необхідно читати абзаци. Далі, змінній і присвоюється число 1 (i=1), це означає, що програма повинна буде читати абзаци, починаючи з 1-го. Основою програми є цикл типу While, всі інструкції, що знаходяться між словами While i Wend, будуть багаторазово повторюватися. Це такі чотири інструкції:
s = ActiveDocument.Paragraphs(i) – читання і присвоєння змінній s тексту чергового абзацу;
rez = MsgBox(Str(i) + “ “ + s, vbOKCancel, “Читання абзаців відкритого документ”) – запуск функції MsgBox, яка видає на екран вікно MsgBox;
If rez = vbCancel Then GoTo mmm – аналіз змінної rez та перехід на мітку mmm:;
i = i + 1 – нарощення змінної і на одиницю.
Дана програма має дві можливості завершення циклу:
за умовою i <= k, тоді програма прочитає і видасть на екран всі абзаци від першого (i=1) до останнього (і=k);
при натисканні клавіші Cancel у вікні MsgBox. Тоді функція MsgBox видасть значення – системну константу vbCancel, яка буде присвона змінній rez. Змінну rez аналізує інструкція If rez=vbCancel Then GoTo mmm, яка забезпечує