予備知識として Visual Basic for Applications/シートからの読み書き があることを前提とする。つまり、VBAまたはLibreOffice Basicの操作が一通りできることを前提とする。
LibreOffice は、現状（2022年に確認）、Pythonマクロを作成できる。
一方、Microsoft Excel では現状（2023年8月）ではPythonマクロは不可能である。よって、Excel との互換性を重視するなら、Pythonマクロは控えるべきである。また、マクロ独自の命令があるので、独自命令の部分には当然ながら一般のPythonインタプリタとの互換性は無いはずである。
なお、2023年8月現在、Microsoft社が将来的にExcelでPython関数を使える新機能を宣言した[https://www.itmedia.co.jp/news/articles/2308/23/news089.html 『Excelが「Python」に対応シート上でコードを実行できるようにグラフ作成、機械学習なども可能』、ITmedia NEWS、2023年08月23日 10時00分 公開]が、ただしこれは現状ではマクロではなくワークシート関数である。またなお、現状ではクラウド上に限定された microsoft365 系の環境での実行のようである（名称を見るかぎり、「365」などの字句が入っているので。詳細は不明）。
LibreOfficeにPythonマクロ を編集するエディタは無い。つまり、VBAのようにcalc内のアプリで編集する機能は無い。
なので、外部のテキストエディタなどでマクロ用のPythonファイルを編集する。
マクロ用といえどもPythonファイルなので、ファイル名には拡張子「.py」をつける事になる。
詳しくは Libreoffice 公式サイト [https://help.libreoffice.org/latest/ja/text/sbasic/python/python_locations.html Pythonスクリプトの管理](2022年6月11日に確認.)  にある。
Windowsの場合、まず、
\AppData\Roaming\LibreOffice\4\user
を探す。
そのあと、構成が
\AppData\Roaming\LibreOffice\4\user\Scripts\python
となるように、フォルダ Scripts および フォルダ python を自作する。
これは、こうと仕様が決まっている。
なお、フォルダ「4」は、単にLibreOfficeがバージョン4台になったときに仕様が大きく変更されて、その系統が2022年の今でも続いているので、「4」という名前なだけである。なお、2022年のLibreOfficeはバージョン7台である。
今後のマクロファイル書き換えの際にアクセスしやすくため、ショートカットを作っておこう。
読み取りたいセルに事前に値を入れておく。
下記コード例では、A1とA2を読み取って加算するので、そこに数値を入れておく。
たとえばFedora36の場合、
 /.config/libreoffice/4/user/Scripts/python
という構成になるように、フォルダ Scrits と フォルダpython をそれぞれの位置に作る。
隠しフォルダ .config を表示するには、単にファイルブラウザ上のホームフォルダで、右上にあるメニューボタン（ハンバーガー杖の形状なのでハンバーガーメニューという）から、「隠しファイルを表示」にチェックを入れればいい。
そのあと、Linuxのショートカット（Linux用語では「シンボリックリンク」という）は下記コマンドで作れる。
ln -s /home/ユーザー名/.config/libreoffice/4/user/Scripts
なお、既存の「\libreoffice」ディレクトリや \user ディレクトリへのショートカットをつくろうとしても、失敗し、コマンドライン上に「作成に失敗しました: ファイルが存在します」と表示される。
どうやら「\libreoffice」などの実態がショートカットのようである。
そのあと、下記コードを書いたpythonファイル（拡張子.py）を、Windowsの場合なら作成しておいた \AppData\Roaming\LibreOffice\4\user\Scripts\python にある pythonフォルダに入れる（pythonという名前のフォルダは1個のみ）。
Linuxの場合なら同様に、 /.config/libreoffice/4/user/Scripts/python にあるpythonフォルダに下記コードを入れる（pythonという名前のフォルダは1個のみ）。
import uno
from msgbox import MsgBox
def my_first_macro_calc():
    doc = XSCRIPTCONTEXT.getDocument()
    
    a = doc.Sheets[0]['A1'].Value
    b = doc.Sheets[0]['A2'].Value
    c = a + b
    
    doc.Sheets[0]['A3'].Value = c
    
    return
Libreoffice では上記コードのように uno というパッケージをインポートすることで、Pythonマクロが使える。
uno を指定しているのは、別にwiki編集者の好みではなく、windowsの場合、windowsにインストールしたLibreofficeのフォルダ構成を調べると既に uno という名前のフォルダがある。このように、Libreoffice では uno が指定されている。
同様にLinuxでも、すでに /.config/libreoffice/4/user/uno_packages がインストール時点で存在している。
さて、ネット検索でpythonマクロの uno について調べる際は PyUNO などの名前で調べると区別しやすい。
さて、上記のフォルダに上記ファイルを入れると、Libreoffice Calc での
ツール＞マクロ＞マクロの管理
の操作により現れるウィンドウ「マクロセレクター」で、アクセスできる。
画面左下「ライブラリ」のマイマクロをクリックして展開すると、
右側「マクロ名」にコード中の関数名「my_first_macro_calc」が表示される。
コードにエラーがある場合は表示されないので、コードを修正する。
セルA3 に セルA1とセルA2の和が表示されていれば成功である。
マクロ独自の部分の解説だけをする。
再掲
import uno
from msgbox import MsgBox
def my_first_macro_calc():
    doc = XSCRIPTCONTEXT.getDocument()
    
    a = doc.Sheets[0]['A1'].Value
    b = doc.Sheets[0]['A2'].Value
    c = a + b
    
    doc.Sheets[0]['A3'].Value = c
    
    return
関数名（my_first_macro_calcの部分）は、キーワード・組込み関数・組込みクラスと衝突しなければ、有効な識別名なら何でもよく、上記コード例では、慣用的によく使われる関数名をつけておいた。
 XSCRIPTCONTEXT.getDocument()  は、Pythonマクロ関数の最初に書き、これは呼び出したシートと当Pythonファイルとのアクセスの命令である。
これを、doc = XSCRIPTCONTEXT.getDocument() のように任意の変数に代入する。別に doc でなくとも aaaa とか何でも良いのだが、わざわざ分かりづらい変数名をつける必要も無いので、慣用的によく使われる変数名 doc などをつけると良いだろう。
セルの値を読み取る際、Visual Basicのように変数をdimなどで宣言する必要は無い。そもそもPythonの文法では、変数を宣言しない。
doc.Sheets[0]['A1'].Value
のように、プロパティにより、読み取らせるセルの指定（.Sheets[0]['A1']）と、値を読み取らせることの指定（.Value）をする。
再掲になるが、Sheets や Value は大文字と小文字を区別するので、必ずこの表記の通りに入力すること。
Valueプロパティの代わりに、メソッド的なgetValue()関数 および setValue()関数 を用いてもいい。
getValue()はセルを読み取る関数（メソッド）である。
setValue()はセルに書き込む関数（メソッド）である。
大文字と小文字を区別するので、この通りにコードを書かないといけない。
コード例
import uno
from msgbox import MsgBox
def my_first_macro_calc():
    doc = XSCRIPTCONTEXT.getDocument()
    
    a = doc.Sheets[0]['A1'].getValue()
    b = doc.Sheets[0]['A2'].getValue()
    
    doc.Sheets[0]['A3'].setValue(c)
    
    return