Назад | Содержание | Далее |
Чтобы создать свой макрос в OpenOffice.org не обязательно быть программистом. В OpenOffice.org имеется встроенная программа регистратор которая может запоминать все действия пользователя с документом и записывать их последовательно в специальный текстовый модуль называемый Макрос.
Для автоматического создания макроса необходимо выполнить следующие действия
Откройте документ, для которого нужно записать макрос.
Выберите команды Сервис => Макросы => Записать макрос.
Откроется маленькое диалоговое окно Запись макроса с одной только кнопкой «Завершить запись» (Рис. 1).
Выполните действия, которые хотите записать в документе.
Нажмите клавишу ESC, чтобы снять выделение объекта, поскольку в настоящее время макрорегистратор не записывает это действие, произведенное щелчком мыши.
Нажмите кнопку «Завершить запись».
Откроется диалоговое окно Макрос, в котором можно сохранить и выполнить макрос (Рис.2).
Если нужно прервать запись, не сохраняя макрос, нажмите кнопку Закрыть в диалоговом окне Макрос.
Чтобы сохранить макрос в файле лабораторной работы, сначала в списке Сохранить макрос в выберите объект (например, Лаб.раб.7), в котором хотите сохранить макрос.
Если нужно сохранить макрос в новой библиотеке или модуле, нажмите кнопку Новая библиотека или Новый модуль и введите имя библиотеки или модуля.
В текстовом поле Название макроса введите имя нового макроса.
Нажмите кнопку «Записать».
Ограничения макрорегистратора
Следующие действия не регистрируются:
Открытие окон не регистрируется.
Действия, выполненные в других окнах (где регистратор не запущен), не регистрируются.
Переключение окон не регистрируется.
Действия, не связанные с содержимым документа, не регистрируются. Например, изменения, внесенные в диалоговое окно "Параметры", организатор макросов, настройки.
Выделения регистрируются только в том случае, если они выполняются с помощью клавиатуры (перемещением курсора), но не регистрируются при использовании мыши.
Макрорегистратор работает только в Calc и Writer.
Задание 1
Активируйте лист «Макрос», а если его нет, то переименуйте «Лист 1»;
Заполните таблицу как на рисунке (Рис. 3)
Выполните команду Сервис => Макросы => Записать макрос;
С помощью автозаполнения заполните первую колонку до 10;
Нажмите кнопку «Записать»;
Сохраните макрос с именем «Zadanie1» в файле лабораторной работы (Рис. 4.);
Примечание: В текущей версии (2.4) русские имена макросов не допускаются.
Очистите в первой колонке ячейки до исходного состояния, т.е. оставьте заполнеными только первую и вторую ячейки колонки;
Установите курсор в ячейку A1 и выполните команду Сервис => Макросы => Выполнить макрос;
В открывшемся окне «Выбор макроса» найдите ваш макрос и нажмите кнопку «Выполнить» (Рис. 5).
Сохраните документ.
В результате у вас должны автоматически заполнится ячейки, с 3 по 10.
Далее мы усовершенствуем свой макрос, добавив ему возможность автоматически заполнять нужное количество ячеек, методом автозаполнение, в той колонке, в которой установлен курсор.
Как мы видим, в результате выполнения упражнения 1 макрос получился очень ограниченый. Он автозаполняет только в колонке A и только до десяти, для того, чтобы сделать макрос универсальным, необходимо воспользоваться встроенным редактором разработки макросов и вручную добавить ему необходимые возможности.
В OpenOffice.org имеется возможность разрабатывать макросы на разных языках программирования, но в данной работе мы воспользуемся OpenOffice.org Basic (Бэйсик). Это связано с тем, что этот язык более похож на макроязык Microsoft Visual Basic for Application (VBA) и после его освоения вы сможете без труда разобраться с подобными задачами в Microsoft Office
Задание 2
Запустите редактор макросов командой Сервис => Макросы => Управление макросами => OpenOffice.org Бэйсик;
В диалоге Макрос выберите макрос «Zadanie1» и нажмите кнопку редактировать (Рис. 6);
В окне редактора найдите процедуру Sub Zadanie1 (Рис. 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 |
Сохраните полученный макрос командой Файл => Сохранить, в редакторе OpenOffice Basic;
Для назначения макросу комбинации клавиш выполните команду Сервис => Настройка и откройте вкладку Клавиатура;
В открывшемся диалоге в поле Категория выделите модуль, в котором расположен макрос «Zadanie1», в поле Функция выделите макрос, после чего в поле Комбинация клавиш выберите свободную комбинацию и нажмите кнопку «Заменить» (Рис.8.);
Нажмите кнопку ОК;
Используя комбинацию клавиш назначенную на макрос заполните список дней недели и месяцев года (Рис. 9.).
Сохраните документ.
Исследовательское задание.
Самостоятельно изучите диалог настройки (Сервис => Настройка) и назначтьте макрос «Zadanie1» на панель инструментов и создайте новое меню Макросы, в которое также назначте макрос.
Совет: Используйте справку OpenOffice.org. для выполнения заданий. (Клавиша F1, или меню Справка => Справка по OpenOffice.org )
Назад | Содержание | Далее |