ВГОРУ

Пишемо макрос на 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.