ВВЕРХ

Пишем макрос на Python для LibreOffice Calc

Описание

LibreOffice Calc дает пользователям возможность создавать собственные макросы, используя встроенный язык программирования StarBasic. Данный язык очень похож на VBA однако имеет ограниченный функционал, поскольку редко используется.

Современные языки программирования, такие как Python, дают гораздо больше возможностей и имеют более широкий спектр дополнительных библиотек на все случаи жизни.

Итак, давайте узнаем, как можно создавать собственные макросы, используя такой популярный на сегодняшний день язык программирования как Python.


Пакет офисных программ LibreOffice позволяет создавать собственные макросы на таких сторонних языках программирования как Python, JavaScript, C++, Java.

StarBASIC Код для HelloWorld

Сначала давайте вспомним, как можно написать собственное приложение, используя стандартные инструменты LibreOffice Calc для написания макросов.

Ниже приведен код для макроса HelloWorld , прописывающий фразу "Hello World!" в ячейку "B7" используя встроенный язык программирования StarBasic.

Чтобы добавить новый макрос, откройте меню Tools - Macros - Edit Macros... , выберите Module1 и скопируйте следующий текст в модуль:

Sub HelloWorld
    GlobalScope.BasicLibraries.loadLibrary("ScriptForge")
    
    'REM "doc" it's a current LO Calc workbook (active worksheet)
    doc = CreateScriptService("Calc")
    doc.SetValue("B7", "Hello World!")
End Sub

Затем, закройте Macro Editor, вернитесь в LibreOffice Calc и запустите наш новый макрос через меню Tools - Macros - Run Macro...

Python Folder

Перед тем, как написать макрос на Python, нам нужно сначала создать *.py файл (myPyScripts.py) в следующей папке:

%APPDATA%\LibreOffice\4\user\scripts\python

Если папки scripts да python отсутствуют, то вам нужно создать их вручную.

Python Код для HelloPython

Ниже приведен Python скрипт для макроса HelloPython , прописывающий фразу "Hello Python!" в ячейку "B8" в программе LibreOffice Calc.

Чтобы добавить новый макрос, откройте файл myPyScripts.py с помощью Notepad++ (или Windows Notepad) и скопируйте туда приведенный ниже текст:

from scriptforge import CreateScriptService

def HelloPython():
    doc = CreateScriptService("Calc")
    doc.SetValue("B8", "Hello Python!")
    return None

Затем, закройте Notepad++ и вернитесь к LibreOffice Calc. Чтобы запутать этот скрипт, откройте меню Tools - Macros - Organise Macros - Python... , выберите "My Macros" , раскройте папку "myPyScripts" и выбрав HelloPython нажмите кнопку Run .

Обратите внимание, что данные макросы на StarBasic, что на Python, используют встроенную библиотеку ScriptForge . Данная библиотека упрощает написание макросов для конечных пользователей, скрывая весь системный функционал "под капот".

Использование расширения

Вы также можете воспользоваться готовым набором функций да утилит написанных на Python установив расширение YLC Utilities .

После этого данный функционал будет доступен во всех файлах, которые будут открыты в LibreOffice Calc.