Министерство образования и науки Российской Федерации
Федеральное государственное автономное образовательное учреждение высшего профессионального образования
«Уральский федеральный университет имени первого Президента России »
доц., к. х.н. О. В. лимановская
Работа со встроенным языком макросов офисного пакета OpenOffice.org visual basic application (VBA)
Методические указания к лабораторным работам
Подготовлено кафедрой «Интеллектуальные информационные технологии»
Научный редактор: доц., канд. техн. наук
Методические указания по дисциплине «Информатика» предназначены для студентов всех форм обучения всех специальностей
В пособие подробно рассмотрены основы встроенного языка макросов офисного пакета Open Office. org 3.0.
© ФГАОУ ВПО УГТУ – УПИ
Екатеринбург
2010
Введение……………………………………………………………………………3
Лабораторная работа № 1.......................................................................................4
Лабораторная работа № 2......................................................................................14
Лабораторная работа № 3……………………………………………………….18
Лабораторная работа № 4………………………………………………………22
Лабораторная работа № 5………………………………………………………..27
Список литературы………………………………………………………………29
Приложение. Образец оформления титульного листа отчета по лабораторной работе……………………………………………………………...31
Введение
В инженерных и технологических расчетах часто требуется использование методов вычислительной математики, для которых наиболее удобна программная реализация. При этом появляется проблема выбора языка или средства программной реализации. Использовать, любой, из ставших сегодня традиционными в программисткой среде, СИ-подобный язык программирования, для человека, не занимающегося профессионально программированием, довольно проблематично. Многие методы вычислительной математики реализованы в расчетных пакетах прикладных программ, таких как MathCad, LabView и прочих, но реализация решений в этих программах стандартная, и зачастую не удобна или вообще не применима для конкретных технических задач. Кроме того, расчетные пакеты прикладных программ довольно дорогие, поэтому далеко не всем техническим специалистам они доступны.
Таким образом, для технических расчетов, проводимых специалистами, но без приглашения программистов, необходим язык программирования легкий в использовании и имеющийся всегда под рукой. Всем этим требованиям отвечает встроенный язык макросов офисного пакета MS Office или OpenOffice – Visual Basic Application (VBA).
Представленный в методическом пособии материал имеет практическую направленность и способствует эффективному освоению использования VBA OpenOffice. org в технических расчетах.
Лабораторная работа № 1
Автоматическое создание макросов
Макрос – сохраненная последовательность команд или нажатий клавиши, которые предназначены для использования в будущем. Макросы поддерживают команды, которые позволяют выполнять различные функции. Обычно макрос связывают с нажатием клавиши или значком на панели инструментов так, чтобы его можно было быстро выполнить.
OpenOffice. org язык макросов основан на языке программирования Visual Basic Application. В OpenOffice. org программы, логически связанные между собой, сохраняются в модуле. Логически связанные модули сохраняются в библиотеках, а библиотеки – в контейнерах библиотек. В OpenOffice. org имеется встроенная программа-регистратор – макрорекодер, которая может запоминать все действия пользователя с документом и на основе их создавать программный код, который записывается в модуль (макрос).
Перед созданием макроса в макрорекодере необходимо тщательно продумать, что планируется делать и в какой последовательности. Затем нужно проверить, нет ли готовой команды. Просмотреть готовые команды можно через пункт меню Сервис –> Настройка, выбрав в отрывшемся окне закладку Панели инструментов.
Способы запуска макроса:
· через пункт меню Сервис->Макросы->Выполнить макрос и в открывшемся окне «Переключатель макросов» выбрать макрос;
· через пункт меню Сервис->Макросы->Управление макросами ->OpenOffice. org Бейсик, в открывшемся окне выбрать макрос и нажать кнопку «Выполнить»;
· создать свою панель инструментов, на которую можно поместить любое количество макросов, тоже созданных самостоятельно. Макрос запускается нажатием на кнопку с панели инструментов.
1. Запись макроса
Для автоматического создания макроса необходимо выполнить следующие действия:
1. Открыть документ программы Calc.
2. Сохранить этот документ под именем «Лабораторная работа_1»;
3. Запустить макрос на запись, выполнив команду Сервис -> Макросы -> Записать макрос.
4. Откроется маленькое диалоговое окно «Запись макроса» с одной только кнопкой «Завершить запись» (рис. 1).
![]()
Рис. 1. Вид окна «Запись макроса»
5. Выполнить действия, которые нужно записать в документе.
6. Нажать кнопку «Завершить запись», после чего откроется диалоговое окно Макрос, в котором нужно сохранить и выполнить макрос (рис. 2)

Рис. 2. Диалог сохранения макроса
7. Чтобы сохранить макрос в файле лабораторной работы, нужно выбрать в списке «Макрос из» объект, в котором хотите сохранить макрос (в нашем случае файл «Лабораторная работа_1») и ввести текстовом поле «Название макроса» имя нового макроса.
8. Нажать кнопку «Записать».
Ограничения макрорегистратора
Следующие действия не регистрируются:
· открытие окон;
· действия, выполненные в других окнах (где регистратор не запущен);
· переключение окон;
· действия, не связанные с содержимым документа, например, изменения, внесенные в диалоговое окно "Параметры", организатор макросов, настройки;
· выделения регистрируются только в том случае, если они выполняются с помощью клавиатуры (перемещением курсора), но не регистрируются при использовании мыши;
· макрорегистратор работает только в Calc и Writer.
Задание 1
1. Откройте документ Calc под именем «Лабораторная работа_1».
2. Перейдите на лист «Лист1» и переименуйте его в «Макрос1». Для этого поместите курсор на название листа и щелкните правой кнопкой мыши, в появившемся контекстном меню выберите пункт «Переименовать». После этого название листа выделится, введите новое название.
3. Заполните таблицу как на рисунке (рис. 3).

Рис. 3. Содержимое таблицы
4. Выполните команду Сервис -> Макросы -> Записать макрос.
5. С помощью инструмента «автозаполнение» заполните первую колонку от 1 до 10.
6. Нажмите кнопку «Записать».
7. Откроется окно «Макрос OpenOffice. org» (рис. 4). В поле «Название макроса» введите «Zadanie1» и нажмите кнопку Записать.

Рис.4. Окно записи макроса
8. Окно макроса закроется.
9. Очистите в первой колонке ячейки до исходного состояния, т. е. оставьте заполненными только первую и вторую ячейки колонки.
10. Установите курсор в ячейку «A1» и выполните команду Сервис -> Макросы -> Выполнить макрос.
11. В открывшемся окне «Выбор макроса» найдите ваш макрос и нажмите кнопку «Выполнить» (рис. 5).
12. Сохраните документ.

Рис. 5. Запуск макроса
13. В результате должны автоматически заполниться ячейки с А3 по А10.
14. Теперь запустим макрос вторым способом.
15. Откройте пункт меню Сервис->Макросы->Управление макросами ->OpenOffice. org Бейсик (рис. 6).
16. В левой панели откройте файл «Лабораторная работа_1», в нем папку «Standard», а в ней папку «Module1».
17. Выберите макрос «Zadanie1».
18. Нажмите кнопку «Выполнить».

Рис. 6. Второй способ запуска макроса
19. Теперь создадим свою панель инструментов и поместим на нее кнопку для созданного макроса.
20. Заходим в пункт меню Сервис->Настройка. Откроется окно «Настройка» (рис.7), в нем выбираем закладку «Панели инструментов».
21. Нажимаем кнопку «Создать». Откроется окно «Имя» (рис.8), в нем вводим имя новой панели инструментов «Мои макросы» и нажимаем кнопку «ОК». Появится новая панель инструментов пока еще пустая. Она также появится в списке панелей инструментов в поле «Панель инструментов».
22. Теперь на нее нужно добавить кнопку, запускающую наш макрос.
23. Для этого нажимаем кнопку «Добавить» и откроется окно «Добавить команду» (рис. 9).
24. В нем выбираем в окне «Категория» пункт «Макрос OpenOffice. org», в нем пункт «Лабораторная работа_1», а в нем – «Module1» (рис.10) и нажимаем кнопку «Добавить». Закройте окно (нажмите кнопку «Закрыть»). После этого на панели появится имя вставленного макроса.

Рис. 7. Окно Настройка

Рис. 8. Окно Имя

Рис. 9. Окно «Добавить команды»
25. Закройте окно «Настройка».
26. Удалите все содержимое, кроме первой строчки.
27. Нажмите на кнопку «Zadanie1».
28. Должны заполниться строки в первом столбце.

Рис. 10. Добавление кнопки
Самостоятельно
Запишите макросы методом автозаполнения для заполнения второго и третьего столбцов и запустите их обоими способами. Создайте кнопки для заполнения второго и третьего столбца и поместите их на панель Мои макросы.
Лабораторная работа № 2
Создание макросов
Макросы в OpenOffice. org пишутся на языке VBA, синтаксис которого почти полностью идентичен синтаксису Visual Basic. Основные синтаксические принципы этого языка:
· VBA нечувствителен к регистру;
· чтобы закомментировать код до конца строки, используется одинарная кавычка или команда REM;
· символьные значения должны заключаться в двойные кавычки (“);
· максимальная длина любого имени – 255 символов.
Оператор – наименьшая единица кода VBA.
Арифметических операторов 7: сложение +, вычитание -, умножение *, деление /, возведение в степень ^, целочисленное деление \ (делит первое число на второе, отбрасывая дробную часть), деление по модулю mod (делит первую число на второе, возвращая только остаток от деления).
Переменные – это контейнеры для хранения данных. Переменные объявляются следующим образом:
Dim имя_переменной As тип_переменной
Типы данных:
· числовые:
Byte – целое число от 0 до 255;
Integer – целое число от -32 768 до 32 767;
Long – большое целое число от -2 147 483 648 до 2 147 483 647;
Single и Double – значения с плавающей запятой;
· строковые – String;
· дата и время – Data;
· логический – Boolean;
· объектный – Object – хранит ссылку на любой объект в памяти;
· variant – специальный тип данных, который может хранить любые другие типы данных;
Ввод данных
Осуществляется с помощью функции InputBox():
InputBox(«Тестовая строка»).
Особенность этой функции в том, что она всегда возвращает строку. Если пользователь вводит число, то оно будет сначала сохраняться в виде строки текста:
S=InputBox(«Введите число»).
Так что в переменной s сохранится тестовая строка, т. е. число в виде «12». Поэтому его нужно преобразовать в число. Для этого используется функция Val:
A=val(s).
Эта функция возвращает число, полученное преобразованием строки s. Если в s было, например, «12», то после использования Val, в переменной А будет число 12.
Вывод данных
Используется функция MsgBox(«Тестовая строка» & имя_переменной).
Задание 1
1. Откройте новый документ в Calc.
2. Откройте редактор Visual Basic, используя команду Сервис -> Макросы -> Управление макросами -> OpenOffice. org Бэйсик. С левой стороны окна диалога найдите документ, который Вы только что открыли. Кликните справа ниже от «untitled1» на названии папки «standard». Для создания нового модуля нажмите кнопку «Создать», расположенную справа. Откроется окно «Новый модуль» (рис. 11).

Рис. 11. Окно «Новый модуль»
3. В поле «Название» введите имя модуля «Hello». Откроется среда редактирования и отладки макросов OOo Basic IDE (рис. 12).

Рис. 12. Окно среды редактирования и отладки макросов
4. В поле окна между словами Sub Main End Sub введите текст
MsgBox(«Hello»)
5. Кликните на кнопке с зеленым треугольником («Выполнить Basic») в верхней панели для выполнения макроса.
6. Программа запустится и откроется окно, которое создается функцией MsgBox (рис. 13). Обратите внимание, что текст, введенный в скобках функции выводится как надпись в окне функции.

Рис. 13. Окно функции MsgBox
7. Сохраните документ.
Самостоятельно
Выведите поздравления с Новым годом.
Задание 2
1. В этом же документе откройте редактор OOo Basic, используя команду меню Сервис->Макросы -> Управление макросами ->OpenOffice. org Бэйсик и выберите только что созданный макрос. Нажмите кнопку «Редактировать».
2. В среде редактирования поправьте имеющейся модуль, введя следующий текст:
Dim a as Integer
Dim s As String
s=InputBox(«Введите число»)
a = val(s)
MsgBox a
8. В первых строках объявляются переменные a и s. Первая имеет тип Integer (целое число), вторая – строка, в нее можно сохранять буквы или слова.
9. Далее используем функцию InputBox, которая считывает то, что ввел пользователь. Но все, что вводит пользователь, считается строкой. Если вводит число, то оно представляется как «2», а все, что в «» считается числом. Поэтому результат ввода сохраняется в переменной s. Чтобы убрать «» с числа применяется функция val, она переводит строку в число. И теперь результат можно сохранить в переменную а.
10. Кликните на кнопке с зеленым треугольником («Выполнить Basic») в верхней панели для выполнения макроса.
11. Программа запустится и откроется окно, которое создается функцией InputBox (рис. 14). Обратите внимание, что текст, введенный в скобках функции, выводится как надпись в окне функции. В окне функции InputBox в поле для ввода введите число и нажмите кнопку «ОК».

Рис. 14. Окно функции InputBox
12. Откроется окно функции MsgBox с введенным ранее числом (рис. 15).

Рис. 15 Окно функции с результатом работы программы
13. Сохраните документ.
Самостоятельно
1. Создайте программу, перемножающую два числа, введенных пользователем.
2. Выведите поздравления для того человека, имя которого введет пользователь.
Лабораторная работа № 3
Создание функций
В Calc можно использовать не только имеющиеся функции, но и создавать свои. Для этого нужно зайти в редактор Бэйсик и в новом модуле написать свою функцию. Затем ее можно использовать, как и любые функции Calc. Ранее мы писали коды процедур, которые начинались со служебного слова Sub. Код функции, в отличие от кода процедуры, начинается с Function и заканчивается end function. В коде функции не нужно предусматривать ввода данных, поскольку он осуществляется через таблицы Calc. Но чтобы это стало возможным необходимо при написании кода функции предусмотреть набор параметров, передаваемых функции. Параметры – это данные передаваемые функции. Параметры объявляются и перечисляются в скобках сразу после имени функции. Таким образом, начало кода функции:
Function имя_функции(список параметров).
Функция, в отличие, от процедуры, всегда возвращает значение. То есть если вызвать написанную в макросе функцию в таблице Calc, то функция произведет расчеты, используя введенные параметры, и выведет в ячейку Calc результат. Таким образом, сначала нужно написать код функции в редакторе VBA, затем вызвать ее в ячейке таблицы Calc:
=имя_функции(номер_ячейки, содержащей параметр функции),
то в ячейке получим результат работы функции.
Задание 1
1. Откройте новый документ Calc и сохранить его под именем «Лабораторная работа_3».
2. Откройте новый модуль Бэйсика с помощью команды меню Сервис-> Макросы->Управление макросами->OpenOffice. org Бэйсик, в открывшемся окне выбрать свой файл «Лабораторная работа_3», в нем выберите пункт «Standart» и нажмите кнопку «Создать», находящуюся на панели справа.
3. В открывшемся окне редактора сотрите все, что есть и наберите следующий код:
Function QH(Q, P)
QH=Q*(100-P)/100
End Function
4. Закройте окно редактора.
5. Заполните следующую таблицу на листе Calc (рис. 16).

Рис. 16. Таблица данных
6. В ячейке «С2» наберите «=QH(A2,B2)» и нажмите «Enter» (в ячейке «А2» – значение параметра Q, в ячейке «В2» – значение параметра P)
7. Сохраните файл.
Самостоятельно
Написать функцию, рассчитывающую сумму налога НДС с выручки, и использовать ее.
Задание 2
Написать функцию OpenOffice. org Basic для следующей функции пользователя, используя ее дополнить таблицу вычисленными значениями и построить график зависимости y=y(x):

1. Откройте новый документ Calc и сохраните его под именем «Лабораторная работа_3».
2. Откройте новый модуль Бэйсика с помощью команды Сервис-> Макросы->Управление макросами->OpenOffice. org Бэйсик, в открывшемся окне выберите свой файл «Лабораторная работа_3», в нем выберите пункт «Standart» и нажмите кнопку «Создать», находящуюся на панели справа.
3. Поскольку программу с длинными строками отлаживать неудобно, то напишем тело функции из нескольких строк. В открывшемся окне редактора сотрите все, что есть и наберите следующий код:
Function FY(x)
a=1+Abs(0.2-x)
b=1+x+x*x
FY=a/b+Sin(x)
FY=FY+Log(x+2)
FY=FY-Atn(x^3+1)
FY=FY+Exp(-x)-Tan(x^3.13)
FY=FY+Sqr(x)+Cos(x+1)
End Function
4. Сохраните файл программы.
5. Закройте окно редактора.
6. На листе Calc заполните столбец А значениями х от -10 до 10.
7. В столбце В рассчитайте по функции FY значение заданного выражения. Для этого в ячейке В1 введите «=FY(A1)».
8. Постройте график зависимости y(x).
9. Сохраните файл.
Самостоятельно
Написать функцию, рассчитывающую значения y=x2+lnx+10,46 – tg x для x от 1 до 20.
Лабораторная работа № 4
Условные операторы
Программа может выполняться не только последовательно, но и, встретив условие, изменить свой ход. Например, при расчете корней квадратного уравнения на первом шаге рассчитывается дискриминант, затем в зависимости от его значения могут быть варианты расчета, либо рассчитываются два корня, либо один, либо уравнение не имеет корней.
Для этого используется оператор if..then:
If условие then
Команды1
Else
Команды2
End If
Если условие истинно, то выполняются команды1, если ложно, то команды2.
Задание 1
Расчет квадратного уравнения вида
, где коэффициенты a, b и с задаются пользователем.
1. Откройте новый документ Calc и сохраните его под именем «Лабораторная работа_4_1».
2. Откройте новый модуль Бэйсика с помощью команды Сервис-> Макросы->Управление макросами->OpenOffice. org Бэйсик, в открывшемся окне выберите свой файл «Лабораторная работа_4_1», в нем выберите пункт «Standart» и нажмите кнопку «Создать», находящуюся на панели справа.
3. В открывшемся окне редактора набрать следующий код между Sub Main и End Sub:
Dim s as String
Dim a, b, c, d, x1, x2, x as double
S=InputBox(«Введите значение коэффициента а»)
A = val(s)
S=InputBox(«Введите значение коэффициента b»)
b = val(s)
S=InputBox(«Введите значение коэффициента c»)
c = val(s)
d=b*b-4*a*c
if D>0 then
x1=(-b+sqr(d))/(2*a)
x2=(-b-sqr(d))/(2*a)
MsgBox («X1=» & str(x1) & « X2=» & str(x2))
else
if D=0 then
x=-b/(2*a)
MsgBox(«x=» & str(x))
else
MsgBox(«Корней нет»)
endif
endif
4. Запустите программу, нажав на зеленую стрелку.
5. Сохраните файл.
Самостоятельно
Написать процедуру, рассчитывающую значение функции
.
Задание 2
Написать функцию OpenOffice. org Basic для вычисления корней квадратного уравнения
, где коэффициенты a, b и с задаются пользователем.
1. Откройте новый документ Calc и сохраните его под именем «Лабораторная работа_4_2».
2. Откройте новый модуль Бэйсика с помощью команды Сервис-> Макросы->Управление макросами->OpenOffice. org Бэйсик, в открывшемся окне выберите свой файл «Лабораторная работа_4_2», в нем выберите пункт «Standart» и нажмите кнопку «Создать», находящуюся на панели справа.
3. Стираем все, что есть в окне редактора и набираем код:
Function KorenX1(a, b, c)
d=b*b-4*a*c
if D>0 then
KorenX1=(-b+sqr(d))/(2*a)
else
if D=0 then
KorenX1=-b/(2*a)
else
KorenX1= val("Корней нет")
endif
endif
End Function
Function KorenX2(a, b, c)
d=b*b-4*a*c
if D>0 then
KorenX2=(-b-sqr(d))/(2*a)
else
if D=0 then
KorenX2=-b/(2*a)
else
KorenX2= val("Корней нет")
endif
endif
End Function
4. Сохранить файл программы.
5. Закрыть окно редактора.
6. На листе Calc в столбцах A, B, C ввести значения коэффициентов a =1, b=2, c=1.
7. В столбце D рассчитать по функции KorenX1 значение корня X1 квадратного уравнения вида ax2+bx+c=0. Для этого введите «=KorenX1(A2;B2;C2)».
8. В столбце E рассчитать по функции KorenX2 значение корня X2 квадратного уравнения вида ax2+bx+c=0. Для этого введите «=KorenX2(A2;B2;C2)».
9. Сохранить файл.
10. Поменяйте значения коэффициентов и рассчитайте снова.
Самостоятельно
Написать функцию, рассчитывающую значение функции

Лабораторная работа № 5
Циклические операторы
Циклические операторы используются тогда, когда необходимо выполнить определенный набор действий несколько раз. Причем сам набор действий называется телом цикла.
Если изначально известно сколько раз нужно выполнить тело цикла, то используется цикл со счетчиком:
For счетчик = начальное значение to конечное значение step шаг цикла
Тело цикла
Next i
Если выполнение тела цикла зависит от конкретного условия, то используются другие типы цикла: Do while …Loop и Do Until … Loop. Первая конструкция используется, если тело цикла должно выполняться при выполнении условия:
Do while условие
Тело цикла
Loop
Вторая конструкция используется, если тело цикла выполняется при невыполнении условия цикла:
Do Until условие
Тело цикла
Loop
Бывают ситуации, когда тело цикла должно быть выполнено хотя бы один раз, тогда применяется конструкция Do..Loop While :
Do
Тело цикла
Loop while условие
Задание 1
Создать процедуру расчета факториала числа, введенного пользователем.
1. Откройте новый документ Calc и сохраните его под именем «Лабораторная работа_5».
2. Откройте новый модуль Бэйсика с помощью команды Сервис-> Макросы->Управление макросами->OpenOffice. org Бэйсик, в открывшемся окне выберите свой файл «Лабораторная работа_5», в нем выберите пункт «Standart» и нажмите кнопку «Создать», находящуюся на панели справа.
4. В открывшемся окне редактора набираем код:
Sub Main
s=InputBox(«Введите число»)
n=val(s)
f=1
for i=1 to n
f=f*i
next i
MsgBox(«Факториал введенного числа равен » & f)
End Sub
5. В этом коде до начала цикла со счетчиком в переменную f записывается 1. Далее в теле цикла со счетчиком в переменной f накапливается произведение чисел от 1 до введенного пользователем числа. Так на первом шаге цикла в f записывается 1*1, на втором шаге цикла 1*2, на третьем – берем то, что было в f на втором шаге 1*2 и * на значение счетчика 3, получается 1*2*3 и так далее.
6. Запускаем код на выполнение.
7. Проверяем работу программы, задав 5 (факториал 5 равен 120).
8. Сохраняем файл.
Самостоятельно
Измените предыдущую процедуру так, чтобы рассчитывалась сумма чисел от 1 до введенного пользователем числа.
Список литературы
1. Слепцова на VBA. Самоучитель. – М.: Издательский дом «Вильямс», 2004. – 384 с.
2. VBA и программирование в MS Office для пользователей. – СПб.: БХВ-Петербург, 2006. – 384 с.
3. Уолкенбах Дж. Excel 2003. Библия пользователя.: Пер. с англ. – М.: Издательский дом «Вильямс», 2005. – 768 с.
4. . Применение VBA и макросов в Microsoft Excel.: Пер. с англ. – М.: Издательский дом «Вильямс», 2005. – 620 с.
5. Моделирование с помощью Microsoft Excel и VBA.: Пер. с англ. – М.: Издательский дом «Вильямс», 2005. – 672 с.
6. VBA эффективное использование. – М.: Издательство «Бином», 2008. – 624 с.
7. VBA 2003. Самоучитель. – М.: Издательство «Бином», 2008. – 384 с.
Приложение
Образец оформления титульного листа
отчета по лабораторной работе
Министерство образовании и науки Российской Федерации
Федеральное государственное автономное образовательное учреждение
Высшего профессионального образования
«Уральский федеральный университет имени первого Президента России »
Кафедра «Интеллектуальные информационные технологии»
Дисциплина «Информатика»
Отчет о лабораторной работе
Работа со встроенным языком макросов офисного пакета OpenOffice. org
Преподаватель доц.
Студент
группы Мт-100902
Екатеринбург 2010
Учебное электронное текстовое издание
Доц., к. х.н.
Работа со встроенным языком макросов офисного пакета OpenOffice. org Visual Basic Application (VBA)
Редактор
Компьютерный набор авторский
Рекомендовано РИС ГОУ ВПО УГТУ–УПИ
Разрешен к публикации
Электронный формат – pdf
Объем уч.-изд. л.
Издательство ФГАОУ ВПО УрФУ
Екатеринбург, ул. Мира, 19
Информационный портал
ФГАОУ ВПО УрФУ
http://www. *****


