Автоматичне створення макросів
2. Автоматичне створення макросів
Щоб створити свій макрос в OpenOffice. org не обов'язково бути програмістом. В OpenOffice. org є вбудована програма реєстратор яка може запам'ятовувати всі дії користувача з документом і записувати їх послідовно в спеціальний текстовий модуль званий Макрос.
2.1. запис макросу
Для автоматичного створення макросу необхідно виконати наступні дії
Відкрийте документ, для якого потрібно записати макрос.
Виберіть команди Сервіс => Макрос => Записати макрос.
Відкриється маленьке діалогове вікно Запись макроса з однієї тільки кнопкою «Завершити запис» (Рис. 1).
Виконайте дії, які хочете записати в документі.
Натисніть ESC, щоб зняти виділення об'єкта, оскільки в даний час макрорегістратор не записує це дія, вироблене клацанням миші.
Натисніть кнопку «Завершити запис».
Відкриється діалогове вікно Макрос. в якому можна зберегти і виконати макрос (Рис.2).
Мал. 2. Діалог збереження макросу.
Якщо потрібно перервати запис, не зберігаючи макрос, натисніть кнопку Закрити в діалоговому вікні Макрос.
Щоб зберегти макрос в файлі лабораторної роботи, спочатку в списку Зберегти макрос в виберіть об'єкт (наприклад, Лаб.раб.7), в якому хочете зберегти макрос.
Якщо потрібно зберегти макрос в новій бібліотеці або модулі, натисніть кнопку Нова бібліотека або Новий модуль і введіть ім'я бібліотеки або модуля.
У текстовому полі Назва макросу введіть ім'я нового макросу.
Натисніть кнопку «Записати».
Такі дії не реєструються:
Відкриття вікон не реєструється.
Дії, виконані в інших вікнах (де реєстратор не запущений), не реєструються.
Перехід між вікнами не реєструється.
Дії, які не пов'язані з вмістом документа, не реєструються. Наприклад, зміни, внесені в діалогове вікно "Параметри", організатор макросів, настройки.
Виділення реєструються тільки в тому випадку, якщо вони виконуються за допомогою клавіатури (переміщенням курсора), але не реєструються при використанні миші.
Макрорегістратор працює тільки в Calc і Writer.
Активуйте лист «Макрос», а якщо його немає, то перейменуйте «Лист 1»;
Заповніть таблицю як на малюнку (Рис. 3)
Виконайте команду Сервіс => Макрос => Записати макрос;
За допомогою автозаповнення заповніть першу колонку до 10;
Натисніть кнопку «Записати»;
Збережіть макрос з ім'ям «Zadanie1» в файлі лабораторної роботи (Рис. 4.);
Примітка: У поточній версії (2.4) українські імена макросів не допускаються.
Очистіть в першій колонці осередку до вихідного стану, тобто залиште заповненими лише першу і другу осередки колонки;
Встановіть курсор в осередок A1 і виконайте команду Сервіс => Макрос => Виконати макрос;
У вікні «Вибір макросу» знайдіть ваш макрос і натисніть кнопку «Виконати» (Рис. 5).
Мал. 5. Запуск макросу.
В результаті у вас повинні автоматично заповниться осередки, з 3 по 10.
Далі ми вдосконалюємо свій макрос, додавши йому можливість автоматично заповнювати потрібну кількість осередків, методом автозаповнення, в тій колонці, в якій встановлений курсор.
2.2. редагування макросів
В OpenOffice. org є можливість розробляти макроси на різних мовах програмування, але в даній роботі ми будемо використовувати OpenOffice. org Basic (Бейсік). Це пов'язано з тим, що ця мова більш схожий на макромова Microsoft Visual Basic for Application (VBA) і після його освоєння ви зможете без праці розібратися з подібними завданнями в Microsoft Office
У діалозі Макрос виберіть макрос «Zadanie1» і натисніть кнопку редагувати (Рис. 6);
Лістинг 2.2.1 .: Універсальний макрос автозаповнення.
dim CurRowNumber as Long 'Номер рядка на якому стоїть курсор
dim EndRowNumber as Long 'Змінна в яку записується введене значення
rem Тут визначаємо змінні для доступу до документа
document = ThisComponent.CurrentController.Frame 'Поточний документ
dispatcher = createUnoService ( "com.sun.star.frame.DispatchHelper")
Selection = document.Controller.Selection 'Виділення
'Номер поточного рядка (рахунок з нуля)
'Ім'я поточної колонки
CurColumnName = Selection.Columns.ElementNames (0)
StartCell = "$" CurColumnName "$" CStr (CurRowNumber + 1) 'Початкова осередок
'Просимо користувача ввести число рядків і
'Додаємо це число до номера поточного рядка
EndRowNumber = CurRowNumber + CLng (InputBox ( "Введіть число:". "Введення кількості рядків (Max 65536)". "10"))
EndCell = "$" CurColumnName "$" CStr (EndRowNumber)
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 ())
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 dim args3 (0) as new com.sun.star.beans.PropertyValue
'Dispatcher.executeDispatch (document, ".uno: GoToCell", "", 0, args3 ())
Для призначення макросу комбінації клавіш виконайте команду Сервіс => Налаштування і відкрийте вкладку Клавіатура;
Мал. 8. Призначення макросу комбінації клавіш.
Натисніть кнопку ОК;
Використовуючи комбінацію клавіш призначену на макрос заповніть список днів тижня і місяців року (Рис. 9.).
Рис 9. Результат виконання макросу.
Самостійно вивчіть діалог настройки (Сервіс => Налаштування) і назначтьте макрос «Zadanie1» на панель інструментів і створіть нове меню Макроси, в яке також назначте макрос.
Порада: Використовуйте довідку OpenOffice. org. для виконання завдань. (Кнопка F1. Або меню Довідка => Довідка поOpenOffice.org)