Вызов Python из Basic
- Создадим скрипт Python с названием test.py
- Наполним скрипт test.py пример макроса размещен в конце документа
- Перенесем его по нужному нам пути см. вкладку "Быстрый старт "
- Откроем ACell и перейдем по пути: Сервис -> Basic (см. изображение ниже)
5. В окне "Макросы Basic" -> выделяем "Standart" -> выберем вкладку "Управление" (см. изображение ниже)
6. Выделяем вкладку "Standart" -> Нажимаем "Создать..." (см. изображение ниже)
7. Вводим нужное имя -> Нажимаем "OK" (см. изображение ниже)
8. Закроем "Управление макросами Basic" (см. изображение ниже)
9. Выделяем созданный макрос (в момем случае "Module2") -> нажимаем "Правка" (см. изображение ниже)
10. В открывшемся окне вводим код Basic из "Примеры для вкладки "Вызов Python из Basic" -> Запускаем клавишой F5 или кнопкой "Выполнить F5" (см. изображение ниже)
Пример макроса Python test.py
#!/usr/bin/env python3
# coding: utf-8 -*-
import uno
from datetime import datetime
from com.sun.star.awt.MessageBoxType import INFOBOX
from com.sun.star.awt.MessageBoxButtons import BUTTONS_YES_NO_CANCEL, DEFAULT_BUTTON_YES
def msgbox(msg=None, title=None):
if msg is None:
msg = "HELLO WORLD"
else:
msg = msg
if title is None:
title = "ТЕСТОВОЕ ДИАЛОГОВОЕ ОКНО"
else:
title = title
ctx = uno.getComponentContext()
smgr = ctx.getServiceManager()
tk = smgr.createInstance("com.sun.star.awt.Toolkit")
dtp = smgr.createInstance("com.sun.star.frame.Desktop")
frame = dtp.getCurrentFrame()
win = frame.getComponentWindow()
mtyp = INFOBOX
btn = BUTTONS_YES_NO_CANCEL + DEFAULT_BUTTON_YES
mb = tk.createMessageBox(win, mtyp, btn, title, msg)
return mb.execute()
def test():
return msgbox(
title="Информация",
msg=f"Дата и время: {datetime.now()}"
)
g_exportedScripts = (test,)
Пример макроса Basic
REM ***** BASIC *****
Function test
oScriptProvider = ThisComponent.getScriptProvider()
oScript = oScriptProvider.getScript("vnd.sun.star.script:test.py$test?language=Python&location=user")
test = oScript.invoke(array(), array(), array())
End Function