0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

LibreOffice: Python のマクロを使う

Posted at

次のページを参考にしました。
LibreOffice CalcでPythonマクロを使う(1)

環境構築

Ubuntu 24.04 のデフォールトの LibreOffice の環境では、Python のマクロは使えません。

次を実行して下さい。

sudo apt install libreoffice-script-provider-python

サンプルの実行

Calc を立ち上げて

ツール -> マクロ -> マクロの管理 -> Python(A)

image.png

HelloWorldPython を実行させます。

image.png

Writer が立ち上がって、次のように表示されます。

image.png

プログラム

サンプルは次のフォルダーにあります。

/usr/lib/libreoffice/share/Scripts/python
$ tree
.
├── Capitalise.py
├── HelloWorld.py
├── InsertText.py
├── NamedRanges.py
├── ScriptForgeHelper.py
├── SetCellColor.py
└── TableSample.py

1 directory, 7 files

ソースコード

HelloWorld.py
# HelloWorld python script for the scripting framework

#
# This file is part of the LibreOffice project.
#
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
#
# This file incorporates work covered by the following license notice:
#
#   Licensed to the Apache Software Foundation (ASF) under one or more
#   contributor license agreements. See the NOTICE file distributed
#   with this work for additional information regarding copyright
#   ownership. The ASF licenses this file to you under the Apache
#   License, Version 2.0 (the "License"); you may not use this file
#   except in compliance with the License. You may obtain a copy of
#   the License at http://www.apache.org/licenses/LICENSE-2.0 .
#

def HelloWorldPython():
    """Prints the string 'Hello World (in Python)' into the current document.
    """

    # Get the doc from the scripting context which is made available to all
    # scripts.
    desktop = XSCRIPTCONTEXT.getDesktop()
    model = desktop.getCurrentComponent()

    # Check whether there's already an opened document.
    # Otherwise, create a new one
    if not hasattr(model, "Text"):
        model = desktop.loadComponentFromURL(
            "private:factory/swriter", "_blank", 0, ())

    # get the XText interface
    text = model.Text

    # create an XTextRange at the end of the document
    tRange = text.End

    # and set the string
    tRange.String = "Hello World (in Python)"

    return None

# vim: set shiftwidth=4 softtabstop=4 expandtab:
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?