Я прочитал учебники, в которых объясняется, как создать макрос Python:
{Код:
from scriptforge import CreateScriptService
def test(args=None)
doc = CreateScriptService("Calc")
doc.SetValue("G3","test")
return None
}
Но когда я открываю всплывающее окно «Макросы Python», разрыв папки пуст:
Я хотел бы знать, почему, или хотя бы знать, где хранятся все эти «макросы приложений», чтобы я мог на них взглянуть.
Я использую Libre Office версии 24.2.3.2 (X86_64) в Windows 10.0.






Откройте приглашение PowerShell и выполните сценарий с помощью Python LibreOffice.
chdir "${env:ProgramFiles}\LibreOffice\program\"
./python "C:/Users/U/AppData/Roaming/LibreOffice/4/user/Scripts/python/break.py"
Это обнаруживает ошибку, которая, как вы можете видеть, связана с отсутствием : после оператора.
File "C:/Users/U/AppData/Roaming/LibreOffice/4/user/Scripts/python/break.py", line 3
def test(args=None)
^
SyntaxError: invalid syntax
В Windows расположение макроса «Приложение» (общее) обычно равно C:\Program Files\LibreOffice\share\Scripts\python.
Если вы еще этого не сделали, обязательно попробуйте расширение APSO для запуска макросов python-uno. И самоучитель.
В более крупных проектах я использую pylint для проверки синтаксиса. Кроме того, я ловлю и регистрирую исключения, например:
def log_exceptions(self, func):
"""Decorator method to log uncaught exceptions."""
def wrapper(*args, **kwargs):
try:
func(*args, **kwargs)
except:
self._setup()
self.logger.exception("Caught exception at top level.")
# Re-raising is proper coding practice when catching all
# exceptions, and we do so even though it will probably
# have no effect, at least during runtime.
raise
return wrapper
def _setup(self):
"""Set up a minimalist file logger."""
raise NotImplementedError()
@Myosotis: LibreOffice поставляется с CPython для Windows, который компилируется в промежуточную форму байт-кода, как это делает Java. Однако код Java UNO должен быть скомпилирован с такими файлами, как unoidl.jar, на отдельном этапе, в то время как CPython не требует явного отдельного этапа компиляции и даже может быть скомпилирован «на лету» в реальном сеансе. См. stackoverflow.com/questions/2998215/….
Большое спасибо ! Я не думал, что Python работает как компилируемый язык при использовании с Libreoffice.