Скачать 264.18 Kb.
|
Лабораторная работа №7Тема: Автоматизация работы в OpenOffice Calc
Макрос (от англ. macros, мн.ч. от macro) — программный объект, при обработке «развёртывающийся» в последовательность действий и/или команд. Во многих «офисных» продуктах (Microsoft Office, OpenOffice.org и др.), в текстовых редакторах (например, Vim) при обработке макроса автоматически выполняется заданная для каждого макроса последовательность действий — нажатия на клавиши, выбор пунктов меню и т. д. Предоставляется интерфейс для записи новых и перезаписи существующих макросов. Макросы используются для автоматизации действий в OpenOffice.org. Макрос может автоматизировать такие действия, который иначе потребовали бы длительных ручных манипуляций с возможными ошибками. В настоящее время автоматизированные действия наиболее легко выполняются написанием макросов в OOo Basic. Новая среда для макросов в версии 2 OpenOffice.org должна облегчить использование других языков, но Basic все еще наиболее легкий в использвании. Вот несколько преимуществ использования языка OOo Basic для управления OpenOffice.org:
В OpenOffice.org Basic объявление переменных может быть неявным. Объявить переменную можно с помощью инструкции Dim. Можно объявлять несколько переменных одновременно, если разделить их имена запятыми. Для определения типа переменной служит либо знак объявления типа после имени, либо соответствующее ключевое слово. Примеры объявлений переменных.
^ В OpenOffice.org Basic предусмотрена поддержка четырех классов переменных.
МассивыВ OpenOffice.org Basic есть одно- и многомерные массивы, определяемые с помощью заданного типа переменной. Массивы применяются для изменения списков и таблиц в программах. К отдельным элементам массива можно обращаться с помощью числового индекса. Массивы необходимо объявлять с помощью инструкции Dim. Для определения диапазона индексов массива используется несколько способов.
Диапазон индексов может включать положительные и отрицательные числа. КонстантыКонстанты имеют фиксированное значение. Они определяются в программе только раз и не могут быть переопределены позднее. CONST ConstName=Expression БиблиотекиБиблиотеки служат инструментом организации модулей и могут присоединяться к документу или шаблону. При сохранении документа или шаблона все модули, содержащиеся в библиотеке, также автоматически сохраняются. Библиотека может включать до 16000 модулей. МодулиНаряду с объявлениями переменных модуль содержит процедуры и функции. Длина программы, которую можно сохранить в модуле, ограничена 64 КБ. Если требуется память большего объема, можно разделить проект OpenOffice.org Basic между несколькими модулями и затем сохранить их в одной библиотеке. ^ Модули диалоговых окон могут содержать определения диалоговых окон, в том числе свойства диалогового окна, свойства каждого элемента диалогового окна и назначенные события. Так как модули диалоговых окон могут содержать только по одному диалоговому окну, они часто упоминаются как диалоговые окна. ^ Sub — краткая форма слова subroutine (подпрограмма). Подпрограмма используется для управления конкретной задачей в программе. Подпрограммы служат для разбиения задачи на отдельные процедуры. Разбиение программы на процедуры и подпроцедуры улучшает читаемость и уменьшает возможность возникновения ошибок. Подпрограмма по возможности использует некоторые параметры как аргументы, но не возвращает значения вызывающей подпрограмме или функции, например: DoSomethingWithTheValues(MyFirstValue,MySecondValue) ^ Функция, по существу, является подпрограммой, возвращающей значение. Функцию можно использовать в правой части описания переменной или в других местах, где обычно используются значения, например: MySecondValue = myFunction(MyFirstValue) ^ Инструкция If...Then используется для выполнения участков программы в зависимости от заданных условий. Когда OpenOffice.org Basic встречает инструкцию If, то проверяется логическое условие. Если оно равно True, то выполняются все дальнейшие инструкции вплоть до следующей инструкции Else или ElseIf. Если это условие равно False и встречается инструкция ElseIf, то OpenOffice.org Basic проверяет следующее условие и выполняет дальнейшие инструкции, если это условие равно True. Если оно равно False, программа переходит к следующей инструкции ElseIf или Else. Инструкции после Else выполняются только в том случае, если ни одно из предыдущий условий не было равно True. После того как все условия проверены и соответствующие инструкции выполнены, программа переходит к инструкции, следующей за EndIf. Инструкции If...Then можно вкладывать одну в другую. Else и ElseIf — необязательные инструкции. Пример: If a>0 Then MsgBox “a>0” End If ^ Повторяет инструкции между инструкцией Do и Loop, пока условие равно True или пока условие не станет равно True. СинтаксисDo [{While | Until} Условие = True] Участок_программы [Exit Do] Участок_программы Loop или Do Участок_программы [Exit Do] Участок_программы Loop [{While | Until} Условие = True] Параметры/ЭлементыУсловие. Сравнение, числовое или строковое выражение, которое вычисляется либо как True, либо как False. Участок_программы. Инструкции, которые нужно повторять, пока условие равно True или пока условие не станет равно True. Инструкция Do...Loop выполняет цикл, пока определенное условие равно True или пока оно не станет равно True. Условие для выхода из цикла должно быть введено после инструкции Do или Loop. В следующих примерах представлены допустимые комбинации: СинтаксисDo While Условие = True участок_программы Loop Участок программы между инструкциями Do While и Loop повторяется, пока условие истинно. Do Until Условие = True участок_программы Loop Участок программы между инструкциями Do Until и Loop повторяется, пока условие ложно. Do участок_программы Loop While Условие = True Участок программы между инструкциями Do и Loop повторяется, пока условие истинно. Do участок_программы Loop Until Условие = True Участок программы между инструкциями Do и Loop повторяется, пока условие не станет истинно. Инструкция ^ используется для безусловного завершения цикла. Эту инструкцию можно добавлять в любое место инструкции Do...Loop. Также можно определить условие выхода, используя структуру If...Then следующим образом: Do... инструкции If Условие = True Then Exit Do инструкции Loop... ^ Повторяет инструкции между For и Next указанное число раз. Синтаксис:For Счетчик=Начало To Конец [Step Шаг] Участок_программы [Exit For] Участок_программы Next [Счетчик] Переменные:Счетчик. Счетчику циклов первоначально присваивается значение справа от знака равенства (Начало). Допустимы только числовые переменные. Счетчик циклов увеличивается или уменьшается в зависимости от значения переменой Шаг до достижения значения Конец. ^ . Числовая переменная, которая определяет исходное значение счетчика в начале цикла. Конец. Числовая переменная, которая определяет последнее значение счетчика в конце цикла. Шаг. Задает значение, на которое увеличивается или уменьшается счетчик цикла. Если параметр Шаг не указан, счетчик цикла увеличивается на 1. В этом случае параметр Конец должен быть больше, чем параметр Начало. Если нужно уменьшать параметр Счетчик, параметр Конец должен быть меньше параметра Начало, а параметру Шаг необходимо присвоить отрицательное значение. Цикл For...Next повторяет все инструкции в цикле число раз, определяемое параметрами. По мере изменения переменной счетчика OpenOffice.org Basic проверяет, достигнуто ли значение Конец. После прохождения счетчиком конечного значения цикл автоматически завершается. Инструкции For...Next могут быть вложенными. Если переменная, следующая за инструкцией ^ , не указана, инструкция Next автоматически ссылается на самую последнюю инструкцию For. Если задается приращение 0, инструкции между For и Next повторяются непрерывно. При отсчете переменной счетчика OpenOffice.org Basic проверяет переполнение или потерю значимости. Цикл завершается, если значение Счетчик превышает значение Конец (положительное значение Шаг) или становится меньше значения Конец (отрицательное значение Шаг). Инструкция Exit For используется для безусловного завершения цикла. Эта инструкция должна находиться внутри цикла For...Next. Используйте инструкцию If...Then для проверки условия выхода следующим образом: For... инструкции If Условие = True Then Exit For инструкции Next Примечание. Во вложенных инструкциях For...Next, если производится безусловный выход из цикла с помощью инструкции Exit For, происходит выход только из одного цикла. Для выполнения лабораторной работы вам необходимо открыть рабочую книгу Лаб.раб.7.ods которая находится в каталоге «Материалы» в каталоге практикума, если такого файла нет то создайте новую рабочую книгу в программе OpenOffice Calc и назовите её Лаб.раб.7.ods.
Чтобы создать свой макрос в OpenOffice.org не обязательно быть программистом. В OpenOffice.org имеется встроенная программа регистратор которая может запоминать все действия пользователя с документом и записывать их последовательно в специальный текстовый модуль называемый Макрос. ^ Для автоматического создания макроса необходимо выполнить следующие действия Откройте документ, для которого нужно записать макрос.
Откроется маленькое диалоговое окно Запись макроса с одной только кнопкой «^ (Рис. 1). ![]() Рис. 1
Нажмите клавишу ESC, чтобы снять выделение объекта, поскольку в настоящее время макрорегистратор не записывает это действие, произведенное щелчком мыши.
Откроется диалоговое окно Макрос, в котором можно сохранить и выполнить макрос (Рис.2). ![]() Рис. 2. Диалог сохранения макроса.
Ограничения макрорегистратора Следующие действия не регистрируются:
Задание 1
![]() Рис. 3.
![]() Рис.4. Примечание: В текущей версии (2.4) русские имена макросов не допускаются.
![]() Рис. 5. Запуск макроса. В результате у вас должны автоматически заполнится ячейки, с 3 по 10. Далее мы усовершенствуем свой макрос, добавив ему возможность автоматически заполнять нужное количество ячеек, методом автозаполнение, в той колонке, в которой установлен курсор. ^ Как мы видим, в результате выполнения упражнения 1 макрос получился очень ограниченый. Он автозаполняет только в колонке A и только до десяти, для того, чтобы сделать макрос универсальным, необходимо воспользоваться встроенным редактором разработки макросов и вручную добавить ему необходимые возможности. В OpenOffice.org имеется возможность разрабатывать макросы на разных языках программирования, но в данной работе мы воспользуемся OpenOffice.org Basic (Бэйсик). Это связано с тем, что этот язык более похож на макроязык Microsoft Visual Basic for Application (VBA) и после его освоения вы сможете без труда разобраться с подобными задачами в Microsoft Office Задание 2
![]() Рис. 6
![]() Рис. 7. Окно редактора макроса. Отредактируйте процедуру примерно как в листинге 2.2.1(комментарии писать не обязательно) Листинг 2.2.1.: Универсальный макрос автозаполнение. sub Zadanie1 rem ---------------------------------------------------------------------- rem Блок объявления переменных dim document as object 'Ссылка на обьект документ dim dispatcher as object 'ссылка на объект сервис UNO dim Selection As object 'Ссылка на выделенную область в документе dim CurRowNumber as Long 'Номер строки на которой стоит курсор dim EndRowNumber as Long 'Переменная в которую записывается введённое значение dim StartCell As String 'Текстовая ссылка на текущую ячейку dim EndCell As String 'Текстовая ссылка на последнюю ячейку rem ---------------------------------------------------------------------- rem Здесь определяем переменные для доступа к документу document = ThisComponent.CurrentController.Frame 'Текущий документ dispatcher = createUnoService("com.sun.star.frame.DispatchHelper") Selection = document.Controller.Selection 'Выделение ' Номер текущей строки (счёт с нуля) CurRowNumber= Selection.CellAddress.Row ' Имя текущей колонки CurColumnName= Selection.Columns.ElementNames(0) ' Методом конкатенации формируем адрес ячеек StartCell= "$" & CurColumnName & "$" & CStr(CurRowNumber+1) 'Начальная ячейка 'Просим пользователя ввести число строк и 'прибавляем это число к номеру текущей строки EndRowNumber= CurRowNumber+CLng(InputBox("Введите число :","Ввод количества строк (Max 65536)","10")) 'адрес последней ячейки EndCell= "$" & CurColumnName & "$" & CStr(EndRowNumber) rem ---------------------------------------------------------------------- dim args1(0) as new com.sun.star.beans.PropertyValue args1(0).Name = "ToPoint" 'Закомментируем значение введённое автоматически 'и заменим нашей переменной для начальной ячейки args1(0).Value = StartCell '"$A$1:$A$2" 'Задание стартовой позиции dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1()) rem ---------------------------------------------------------------------- dim args2(0) as new com.sun.star.beans.PropertyValue args2(0).Name = "EndCell" 'Заменяем значение на переменную конечной ячейки args2(0).Value = EndCell '"$A$10" 'Запускаем функцию автозаполнения dispatcher.executeDispatch(document, ".uno:AutoFill", "", 0, args2()) rem Закомментируем лишние инструкции ---------------------------------- 'rem dim args3(0) as new com.sun.star.beans.PropertyValue 'args3(0).Name = "ToPoint" 'args3(0).Value = "$A$1:$A$10" 'dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args3()) end sub
![]() Рис. 8. Назначение макросу комбинации клавиш.
![]() Рис 9. Результат выполнения макроса. Исследовательское задание. Самостоятельно изучите диалог настройки (Сервис => Настройка) и назначтьте макрос «Zadanie1» на панель инструментов и создайте новое меню Макросы, в которое также назначте макрос. Совет: Используйте справку OpenOffice.org. для выполнения заданий. (Клавиша F1, или меню Справка => Справка по OpenOffice.org )
Задание 2:
Листинг 3.1: Ваш первый макрос, “Hello world”. Sub Main Print "Hello World" End Sub
Задание 3 OOo Basic основан на процедурах и функциях, которые задаются ключевыми словами Sub и Function – далее они будут называться процедурами или соответственно функциями. Каждая процедура может вызывать другие процедуры. Каждый модуль (module) содержит набор процедур (функций). Библиотека (Library) содержит набор модулей. Документ (document) может содержать библиотеку или несколько библиотек. Библиотека может существовать также на уровне Приложения (application level), такого как OOo Calc. Разница между Sub и Function в том, что функция возвращает значение, а процедура – нет. Макрос на Листинг 2 получает текстовую строку от функции с именем HellowWorldString.
Подсказка: используйте функцию InputBox() как в предыдущем разделе. Листинг 3.2: “Hello world” с использованием процедуры и функции. Sub HelloWorld Dim s As String s = HelloWorldString() MsgBox s End Sub Function HelloWorldString() As String HelloWorldString = "Hello World" End Function Задание 4. Написать программу на OpenOffice.org Basic для функции пользователя, которая вычисляет получаемую потребителем электроэнергию QH по количеству электроэнергии Q, которое вырабатывается производителем, и величине потерь P (%) при ее передаче: QH=Q(100-P)/100. Заполнить ячейку С2 следующей таблицы с использованием построенной функции пользователя: ![]() Рис. 10. Решение задания 4: Вызовем OpenOffice.org Calc и создадим новую электронную таблицу. Воспроизведем данные, приведенные выше. Вызовем редактор OOo Basic: ^ Выберем в диалоге выбора макроса пункт соответствующий названию документа, и нажмём кнопку «Создать». В появившемся окне напишем следующий текст программы : Листинг 3.3. Function QH(Q, P) QH=Q*(100-P)/100 End Function Далее вернемся в окно Рабочего листа 1, и при помощи мыши выберем ячейку С2, в которую необходимо внести число, вычисляемое по только что созданной пользовательской функции. Для этого щёлкнем левой кнопкой мыши в поле ввода формул (которое находится выше ячеек таблицы, после кнопок обозначенных f(x) ? = ) и напишем следующую строку: =QH(A2;B2) где QH название только что написанной функции, A2 адрес ячейки для аргумента Q, B2 адрес ячейки для аргумента P. После этого нажмём клавишу Enter на клавиатуре. В результате в ячейку С2 запишется значение функции QH, и Лист 1 примет вид: ![]() Рис. 11. Результат вычисления функции Задание 5. Написать программу на OpenOffice.org Basic для следующей функции пользователя, используя ее дополнить таблицу вычисленными значениями и построить график зависимости y=y(x): ![]() Таблица 1
Решение задания 5: Поскольку с программу с длинными строками отлаживать неудобно, то напишем тело функции из нескольких строк: Листинг 3.4. 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 Далее проведите расчеты с использованием данной функции пользователя и заполните таблицу. Не следует заполнять все ячейки значений аргумента x, вводя их с клавиатуры, так как это будет нерационально. Вместо этого введите два значения в ячейки B1 и С1, представляющие собой первый и второй члены арифметической прогрессии. Далее выделите диапазон ячеек B1:C1. Затем расположите указатель мыши на маркере заполнения выделенного диапазона, как показано ниже на рисунке, и протяните его вправо до получения числового ряда нужной длины: ![]() Рис. 12 В дальнейшем в подобной стандартной ситуации, которая при работе с таблицами встречается часто, используйте этот метод автоматического заполнения ячеек числовым рядом, соседние члены которого отличаются на постоянную величину. Вычислите значения функции самостоятельно, используя навыки, приобретенные при выполнении предыдущих заданий. Для построения графика зависимости y=y(x) выберите Вставка>Диаграмма. Выберите тип диаграммы «Линии», «Только точки». Нажмите кнопку далее, и в поле вводу «Диапазон данных» введите диапазон $A$1:$J$2 отметьте пункт «Ряды данных в строках» и включите пункты «^ », «Первый столбец как надпись». Нажмите кнопку «Далее» два раза. В заголовке ось X введите символ X, а ось Y введите символ Y. В результате получим следующую картину: ![]() Рис. 13. Можете самостоятельно поработать с этим графиком с целью улучшения ее вида. ^ . Составить программу на OOo Basic для определения функции пользователя y=y(x), заполнить таблицу значений функции при изменении аргумента в самостоятельно выбранном диапазоне и построить график зависимости y=y(x): ^ Задание 7 y=x2+lnx+10,46 – tg x Задание 8 y=x25+ln| x+10,46| – tg x Задание 9 ![]() Задание 10 Постройте пользовательскую функцию для вычисления стоимости товара с НДС по его стоимости без НДС и ставки НДС. С использованием этой функции заполните таблицу, отражающую стоимость товаров без НДС и с НДС. Исходные данные выберите самостоятельно.
Мы привыкли использовать элементы управления в диалоговых окнах, формы в динамических Web-страницах. Элементы управления -это флажки (Check Box), переключатели (Option Button), раскрывающиеся списки (ListBox), счетчики (SpinButton), полосы прокрутки, кнопки (PushButton), поля для ввода текста (TextBox). В электронных таблицах удобно использовать элементы управления для быстрого ввода информации при формировании какого-нибудь документа. Данные полученные из форм используются как исходная информация для последующей обработки с помощью обычных формул и функций. ^ Оператору, принимающему заказы на доставку пиццы или другой продукции по телефону, необходимо быстро сформировать бланк заказа, рассчитать стоимость заказа с учетом цен, скидок и других данных, распечатать бланк. В поля для ввода текста вносится информация о заказчике. В определенных ячейках введено текущее время и дата заказа. Данные об ассортименте продукции внесены в обычный список, содержащий три колонки (номер по порядку, наименование, цена). Различные варианты скидок или надбавок можно внести в определенные ячейки, а можно использовать прямо в формулах. Список выбора (форма) формируется по диапазону ячеек с наименованием пиццы. Различные опции, скидки, надбавки указываются с помощью переключателей или флажков. Очистка бланка делается нажатием кнопки.
![]() ![]() Рис. 14. Рис. 15.
Например, мы хотим использовать флажок для указания срочности доставки. Если флажок включен – доставка срочная, за срочность установлена надбавка от стоимости заказа.
Удобно все возвращаемые из элементов управления значения связывать с ячейками одного столбца, который потом можно скрыть. ![]() Рис. 16
![]() Рис. 17
![]() Рис. 18.
![]() Рис. 19.
![]() Рис. 20.
Необходимо в свойствах списка (вкладка Данные) указать связанную ячейку и диапазон ячеек, по которому список формируется. Адреса ячеек вводятся вручную. Исходный диапазон ячеек-это таблица с наименованием пиццы и ценой. Во вкладке Общие можно указать цвет фона, обрамление. Удобно таблицу, по которой формируется диапазон для списка расположить на другом листе документа. Для печати сформированного бланка будем использовать выделенный диапазон. Ориентация страницы и диапазон для печати устанавливаются в меню Формат. ^
|
![]() | Процесс изменения значений ячеек и анализа влияния этих изменений на результат вычисления формул в OpenOffice org Calc называется... | ![]() | Столбцы обозначены буквами латинского алфавита, а строки цифрами. Пересечение строки и столбца называется клеткой или ячейкой |
![]() | Редактирование данных в активной ячейке можно выполнить тремя способами (для завершения редактирования всегда нужно нажать клавишу... | ![]() | Электронные таблицы используются для хранения данных и выполнения вычислений. В рабочей книге ooo Calc может содержаться произвольное... |
![]() | Электронные таблицы используются для хранения данных и выполнения вычислений. В рабочей книге ooo Calc может содержаться произвольное... | ![]() | Изучить основные функции электронной таблицы OpenOffice org Calc для работы с файлами: открытие, создание и сохранение документа |
![]() | ... | ![]() | Практические работы по использованию OpenOffice org Calc для решения финансово-экономических задач |
![]() | Финансовый анализ данных в OpenOffice org Calc осуществляется с помощью финансовых функций. Категория финансовых функций включает... | ![]() | Вырезать, Копировать, Вставить (или соответствующих кнопок на пи, или быстрых клавиш Ctrl+X, Ctrl+C, Ctrl+V) |