LibreOffice - это ответ мирового сообщества FOSS на распространенный и проприетарный пакет Microsoft Office Suite. Разработанный ведущими разработчиками и участниками программного обеспечения для повышения производительности Office, он предлагает полную замену Microsoft Office в нескольких операционных системах.
Приложение LibreOffice, эквивалентное Microsoft Excel, называется LibreOffice Calc. Он имеет ряд функций и интерфейс, аналогичный Excel. Он имеет встроенный механизм макросов для разработки и запуска макросов для автоматизации. Однако он не поддерживает Visual Basic, но поддерживает свой собственный язык; LibreOffice Basic для программирования макросов.
Пакет LibreOffice предустановлен в большинстве дистрибутивов Linux, включая Ubuntu, Debian, Fedora и CentOS.
Создание и запуск макроса в LibreOffice Calc
Во-первых, давайте создадим лист с примерами данных.
Чтобы открыть органайзер макросов, перейдите в Инструменты »Макросы» Упорядочить макросы »Основы LibreOffice. Это откроет Макросы LibreOffice Basic окно, как показано на скриншоте ниже.
Введите новое имя для макроса, затем нажмите кнопку «Новый» в правом нижнем углу окна.
Теперь вы должны увидеть экран редактора макросов в LibreOffice Basic.
Как мы видим, созданные вручную макросы по умолчанию создаются в разделе «Мои макросы и диалоги -> Стандартные -> Модуль1».
В настоящее время присутствуют два макроса: один - Главный
, который является пустым макросом по умолчанию, а другой - контрольная работа
, макрос, который мы создали выше. Теперь мы улучшим тестовый макрос.
Наш макрос будет выполнять следующие задачи:
- Проверьте, у кого есть профессия писателя
- Создать новый лист
- Переместить все записи для писателей на новый лист
Ниже приводится наш макрос:
Подтест rem Переместить записи с профессией Writer на новый лист dim crs (8) как объект dim j как Integer dim prof как объект dim i как Integer dim sh как объект dim sh2 как объект sh = ThisComponent.Sheets (0) crs (0) = sh.getCellRangeByPosition (0, 0, 3, 0) j = 1 для i = от 1 до 5 x = 1 prof = sh.GetCellByPosition (3, i) rem Сохранить всю строку в переменной Если prof.string = "Writer" Тогда crs (j) = sh.getCellRangeByPosition (0, i, 3, i) j = j + 1 End If next i rem Теперь создайте новый лист и запишите туда эти данные ThisComponent.Sheets.insertNewByName ("Writers", 1) sh2 = ThisComponent.Sheets (1) i = 0 Делать, пока не IsNull (crs (i)) sh2range = sh2.getCellRangeByPosition (0, i, 3, i) sh2range.setDataArray (crs (i) .getDataArray) i = i + 1 Подчеркнутый конец петли
Позвольте мне объяснить вам этот макрос по частям.
Дополнительный тест. . . Конец подписки
контрольная работа
- это имя нашего макроса, поэтому в коде оно обозначается как Дополнительный тест
(sub = подпрограмма). Точно так же мы заканчиваем этот макрокод оператором Конец подписки
. Обратите внимание, что эти операторы автоматически добавляются, когда мы создаем макрос из меню, хотя пользователь может напрямую написать здесь код макроса, и имя подпрограммы будет рассматриваться как имя макроса.
rem
Все комментарии в LibreOffice Basic начинаются с ключевого слова rem
. Полная строка, начинающаяся с rem, считается комментарием. Другой способ - использовать '
(одиночная кавычка) в начале строки.
dim crs (8) as object dim j as Integer dim prof as object dim i as Integer dim sh as object dim sh2 as object
Это объявление переменной в LibreOffice Basic. Общий синтаксис: тусклый, как
. Чтобы объявить массив, используйте синтаксис, аналогичный переменной crs, где 8 - длина массива.
sh = ThisComponent.Sheets (0) crs (0) = sh.getCellRangeByPosition (0, 0, 3, 0) j = 1
ThisComponent
относится к текущему документу. В данном случае это рабочий лист Calc. Загружаем Sheet с индексом 0, т.е. первый лист, в переменную sh. Также есть функции для загрузки листа по имени.
Далее мы вызываем функцию getCellRangeByPosition
объекта sh и загрузите его в массив crs. Диапазон ячеек относится к группе ячеек на листе в зависимости от положения.
Обратите внимание, что аргументы, 0, 0
(столбец 0, строка 0) обозначают начальную ячейку диапазона, а 3, 0
(столбец 3, строка 0) обозначают конечную ячейку диапазона. Таким образом 0, 0, 3, 0
относится к первой (заголовочной) строке нашего образца.
для i = от 1 до 5 x = 1 prof = sh.GetCellByPosition (3, i) rem Сохранить всю строку в переменной Если prof.string = "Writer" Тогда crs (j) = sh.getCellRangeByPosition (0, i, 3, i ) j = j + 1 End Если следующий i
Мы используем за
оператор для перебора строк. В за
блок заканчивается следующий
оператор, который увеличивает переменную i в конце каждой итерации.
Далее мы вызываем функцию GetCellByPosition
объекта ш. Передаем параметры (3, я)
, т.е. на каждой итерации объект ячейки в столбце 3 и строке i извлекается в переменной prof.
Затем мы используем Если
оператор, чтобы проверить, является ли значение в ячейке prof «Writer». Если это так, мы снова вызываем функцию getCellRangeByPosition
на этот раз с я
вместо номера начала и конца строки. Снова сохраняем его в массиве crs
.
ThisComponent.Sheets.insertNewByName ("Писатели", 1) sh2 = ThisComponent.Sheets (1)
Сначала мы создаем новый лист с именем Писатели
, в позиции 1
, которая является второй позицией, поскольку индекс начинается с 0. Затем мы получаем объект этого вновь созданного листа, так что мы можем ввести данные писателей в этот лист.
i = 0 Делать, пока не IsNull (crs (i)) sh2range = sh2.getCellRangeByPosition (0, i, 3, i) sh2range.setDataArray (crs (i) .getDataArray) i = i + 1 Loop
В Делать пока
Оператор цикла используется, когда мы хотим выполнить цикл на основе условий, в отличие от цикла в диапазоне целочисленных значений, для которых используется использование за
как показано ранее. Здесь мы зацикливаемся до crs (я)
не равно нулю.
Далее мы снова вызываем getCellRangeByPosition
таким же образом, как и раньше, чтобы получить объект диапазона на новом листе.
Наконец, мы вызываем две функции: getDataArray
который возвращает данные из crs (я)
, т.е. одна строка данных (о писателе) с первого листа; и мы записываем эти данные в диапазон ячеек на новом листе, используя setDataArray
.
Наконец, сохраните макрос из Файл »Сохранить все вариант.
Чтобы запустить макрос, перейдите в Инструменты »Макросы» Запустить макрос и выберите свой макрос из каталога «Мои макросы» в библиотеке выбора макросов. Щелкните значок Бегать после выбора имени макроса.
Выполнение вышеуказанного макроса в нашем примере электронной таблицы дает следующий результат.
Это способ создания макросов в LibreOffice. Для получения дополнительной информации и опций обратитесь к официальной документации.
? Ваше здоровье!