Pythonマクロ
予備知識として Visual Basic for Applications/シートからの読み書き があることを前提とする。つまり、VBAまたはLibreOffice Basicの操作が一通りできることを前提とする。
概要

LibreOffice は、現状(2022年に確認)、Pythonマクロを作成できる。
概要

一方、Microsoft Excel では現状(2023年8月)ではPythonマクロは不可能である。よって、Excel との互換性を重視するなら、Pythonマクロは控えるべきである。また、マクロ独自の命令があるので、独自命令の部分には当然ながら一般のPythonインタプリタとの互換性は無いはずである。
概要

なお、2023年8月現在、Microsoft社が将来的にExcelでPython関数を使える新機能を宣言したが、ただしこれは現状ではマクロではなくワークシート関数である。またなお、現状ではクラウド上に限定された microsoft365 系の環境での実行のようである(名称を見るかぎり、「365」などの字句が入っているので。詳細は不明)。
概要

LibreOfficeにPythonマクロ を編集するエディタは無い。つまり、VBAのようにcalc内のアプリで編集する機能は無い。
概要

なので、外部のテキストエディタなどでマクロ用のPythonファイルを編集する。
概要

マクロ用といえどもPythonファイルなので、ファイル名には拡張子「.py」をつける事になる。
LibreOfficeの場合

詳しくは Libreoffice 公式サイト Pythonスクリプトの管理(2022年6月11日に確認.) にある。
LibreOfficeの場合

Windowsの場合、まず、
LibreOfficeの場合

\AppData\Roaming\LibreOffice\4\user
LibreOfficeの場合

を探す。
LibreOfficeの場合

そのあと、構成が
LibreOfficeの場合

\AppData\Roaming\LibreOffice\4\user\Scripts\python
LibreOfficeの場合

となるように、フォルダ Scripts および フォルダ python を自作する。
LibreOfficeの場合

これは、こうと仕様が決まっている。
LibreOfficeの場合

なお、フォルダ「4」は、単にLibreOfficeがバージョン4台になったときに仕様が大きく変更されて、その系統が2022年の今でも続いているので、「4」という名前なだけである。なお、2022年のLibreOfficeはバージョン7台である。
LibreOfficeの場合

今後のマクロファイル書き換えの際にアクセスしやすくため、ショートカットを作っておこう。
LibreOfficeの場合

読み取りたいセルに事前に値を入れておく。
LibreOfficeの場合

下記コード例では、A1とA2を読み取って加算するので、そこに数値を入れておく。
LibreOfficeの場合

たとえばFedora36の場合、
LibreOfficeの場合

という構成になるように、フォルダ Scrits と フォルダpython をそれぞれの位置に作る。
LibreOfficeの場合

隠しフォルダ .config を表示するには、単にファイルブラウザ上のホームフォルダで、右上にあるメニューボタン(ハンバーガー杖の形状なのでハンバーガーメニューという)から、「隠しファイルを表示」にチェックを入れればいい。
LibreOfficeの場合

そのあと、Linuxのショートカット(Linux用語では「シンボリックリンク」という)は下記コマンドで作れる。
LibreOfficeの場合

ln -s /home/ユーザー名/.config/libreoffice/4/user/Scripts
LibreOfficeの場合

なお、既存の「\libreoffice」ディレクトリや \user ディレクトリへのショートカットをつくろうとしても、失敗し、コマンドライン上に「作成に失敗しました: ファイルが存在します」と表示される。
LibreOfficeの場合

どうやら「\libreoffice」などの実態がショートカットのようである。
LibreOfficeの場合

そのあと、下記コードを書いたpythonファイル(拡張子.py)を、Windowsの場合なら作成しておいた \AppData\Roaming\LibreOffice\4\user\Scripts\python にある pythonフォルダに入れる(pythonという名前のフォルダは1個のみ)。
LibreOfficeの場合

Linuxの場合なら同様に、 /.config/libreoffice/4/user/Scripts/python にあるpythonフォルダに下記コードを入れる(pythonという名前のフォルダは1個のみ)。
LibreOfficeの場合

Libreoffice では上記コードのように uno というパッケージをインポートすることで、Pythonマクロが使える。
LibreOfficeの場合

uno を指定しているのは、別にwiki編集者の好みではなく、windowsの場合、windowsにインストールしたLibreofficeのフォルダ構成を調べると既に uno という名前のフォルダがある。このように、Libreoffice では uno が指定されている。
LibreOfficeの場合

同様にLinuxでも、すでに /.config/libreoffice/4/user/uno_packages がインストール時点で存在している。
LibreOfficeの場合

さて、ネット検索でpythonマクロの uno について調べる際は PyUNO などの名前で調べると区別しやすい。
LibreOfficeの場合

さて、上記のフォルダに上記ファイルを入れると、Libreoffice Calc での
LibreOfficeの場合

ツール > マクロ > マクロの管理
LibreOfficeの場合

の操作により現れるウィンドウ「マクロセレクター」で、アクセスできる。
LibreOfficeの場合

画面左下「ライブラリ」のマイマクロをクリックして展開すると、
LibreOfficeの場合

右側「マクロ名」にコード中の関数名「my_first_macro_calc」が表示される。
LibreOfficeの場合

コードにエラーがある場合は表示されないので、コードを修正する。
LibreOfficeの場合

セルA3 に セルA1とセルA2の和が表示されていれば成功である。
LibreOfficeの場合

マクロ独自の部分の解説だけをする。
LibreOfficeの場合

再掲
LibreOfficeの場合

関数名(my_first_macro_calcの部分)は、キーワード・組込み関数・組込みクラスと衝突しなければ、有効な識別名なら何でもよく、上記コード例では、慣用的によく使われる関数名をつけておいた。
LibreOfficeの場合

XSCRIPTCONTEXT.getDocument() は、Pythonマクロ関数の最初に書き、これは呼び出したシートと当Pythonファイルとのアクセスの命令である。
LibreOfficeの場合

これを、doc = XSCRIPTCONTEXT.getDocument() のように任意の変数に代入する。別に doc でなくとも aaaa とか何でも良いのだが、わざわざ分かりづらい変数名をつける必要も無いので、慣用的によく使われる変数名 doc などをつけると良いだろう。
LibreOfficeの場合

セルの値を読み取る際、Visual Basicのように変数をdimなどで宣言する必要は無い。そもそもPythonの文法では、変数を宣言しない。
LibreOfficeの場合

doc.Sheets[0]['A1'].Value
LibreOfficeの場合

のように、プロパティにより、読み取らせるセルの指定(.Sheets[0]['A1'])と、値を読み取らせることの指定(.Value)をする。
LibreOfficeの場合

再掲になるが、Sheets や Value は大文字と小文字を区別するので、必ずこの表記の通りに入力すること。
LibreOfficeの場合

Valueプロパティの代わりに、メソッド的なgetValue()関数 および setValue()関数 を用いてもいい。
LibreOfficeの場合

getValue()はセルを読み取る関数(メソッド)である。
LibreOfficeの場合

setValue()はセルに書き込む関数(メソッド)である。
LibreOfficeの場合

大文字と小文字を区別するので、この通りにコードを書かないといけない。