TOP

LibreOffice Calc 用の Python にマクロを作成します

説明

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 フォルダー

Python にマクロを記述する前に、まず *.py ファイルを作成する必要があります (myPyScripts.py) 次のフォルダーにあります。

%APPDATA%\LibreOffice\4\user\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 で開かれるすべてのファイルで利用できるようになります。