Q:pythonとxlwingsでEXCELを操作するのと同じように、pythonでLibreOfficeのCalcを操作できないか
A:
Pythonを使ってLibreOffice Calcを操作することは可能です。
Excelにおける xlwings や openpyxl のように、LibreOffice Calc にもいくつかの連携方法があります。目的(背景で高速処理したいか、それとも画面上のCalcをマクロのように動かしたいか)によって最適なライブラリが異なります。
主要な3つのアプローチを比較してご紹介します。
## 1. uno (UNO Python API) —— 標準かつ最も強力
LibreOfficeが公式に提供している UNO (Universal Network Objects) という仕組みをPythonから呼び出す方法です。画面上で開いているCalcを操作したり、マクロとして埋め込んで実行したりできます。

* メリット: LibreOfficeのすべての機能(マクロ実行、書式設定、グラフ作成など)をフル制御できる。
* デメリット: コードの書き方が独特で、Excelの xlwings に比べると習得難易度が高い。
* コード例(起動してセルに書き込む場合):

import uno
# ローカルのLibreOfficeコンポーネントに接続(事前にLibreOfficeを待機状態で起動しておく必要があります)localContext = uno.getComponentContext()resolver = localContext.ServiceManager.createInstanceWithContext(
    "com.sun.star.bridge.UnoUrlResolver", localContext
)ctx = resolver.resolve(
    "uno:socket,host=localhost,port=2002;urp;StarOffice.ComponentContext"
)smgr = ctx.ServiceManager
desktop = smgr.createInstanceWithContext("com.sun.star.frame.Desktop", ctx)doc = desktop.loadComponentFromURL("private:factory/scalc", "_blank", 0, ())sheet = doc.getSheets().getByIndex(0)
# A1セルに値を入力cell = sheet.getCellByPosition(0, 0)  # 列、行 (0始まり)
cell.setString("Hello from Python!")



### 2. `ezodf` —— ODSファイルを背景で高速処理(画面操作なし)
画面を起動せず、LibreOffice Calcの標準フォーマットである **`.ods` ファイルを直接作成・編集したい場合**に最適です。Excelでいう `openpyxl` に近いポジションです。

*   **メリット:** LibreOffice自体を起動する必要がないため高速。構文がシンプル。
*   **デメリット:** 画面を開いてリアルタイムに操作(xlwingsのような使い方)することはできない。

### 3. `openpyxl` または `pandas` —— Excel形式を経由する
もし最終的なこだわりが「LibreOffice Calc」ではなく、「無料でExcelファイルをPythonから操作して、それをLibreOfficeで開ければいい」ということであれば、定番の **`openpyxl`** を使うのが最も簡単です。LibreOfficeは `.xlsx` ファイルを問題なく開けます。

---

### どれを選ぶべき?(トレードオフ)

| 目的 | おすすめのライブラリ | 特徴 |
| :--- | :--- | :--- |
| **画面上のCalcを動かしたい / マクロを作りたい** | **`uno` (内蔵API)** | 公式機能。少し難しいが何でもできる。 |
| **画面は不要で、`.ods`ファイルを読み書きしたい** | **`ezodf`** | 軽量・シンプル。 |
| **一番簡単な方法でデータや書類を作りたい** | **`openpyxl`** | `.xlsx`形式になるが、情報量が多くて最も簡単。 |

<FollowUp>
今回はどのような自動化を行いたいですか?
* **現在画面に開いているCalc**を操作したい
* バックグラウンドで**大量のファイルを一括処理**したい
* **Excel(`xlwings`)で作った既存のコード**をLibreOffice用に移植したい

状況に合わせて、具体的なセットアップ方法やコードをご案内します。
</FollowUp>


Q:開いたままのCULCからpythonコードを起動し、pythonコードがCULC上のセルを読んで計算処理した結果を、開いたままのCULCのシートのセルに書き込みたい。xlwingsとEXCELではこれが可能であるが、それをCULCでやりたい。
A:
画面に開いたままの LibreOffice Calc から Python を起動し、その Calc 上のセルを読み書きすること(xlwings と同様の操作)は完全に可能です。
LibreOffice では、これを 「Python マクロ」 という仕組みを使って実現します。Excel の VBA の代わりに Python を使うイメージです。
これを実現するための具体的な手順とコードを解説します。
------------------------------
## ステップ 1: Python スクリプトの作成
まず、Calc のセルを読み書きする Python コードを作成します。開いている Calc 自身を操作する場合、uno ライブラリの XSCRIPTCONTEXT という特別なオブジェクトを使用します。
以下のコードを、calc_macro.py というファイル名で保存してください。

import uno
def my_calc_macro(*args):
    """開いているCalcのセルを読み込み、計算して書き戻すマクロ"""
    # 現在アクティブなドキュメント(開いているCalc)を取得
    ctx = uno.getComponentContext()
    smgr = ctx.ServiceManager
    
    # XSCRIPTCONTEXTから現在のドキュメントを直接取得
    doc = XSCRIPTCONTEXT.getDocument()
    
    # 1番目のシート(インデックス0)を取得
    sheet = doc.getSheets().getByIndex(0)
    
    # 【読み込み】A1セルとA2セルの「数値」を取得
    # getCellByPosition(列, 行) ※0始まりなので A1=(0,0), A2=(0,1)
    val1 = sheet.getCellByPosition(0, 0).getValue()
    val2 = sheet.getCellByPosition(0, 1).getValue()
    
    # 【計算処理】 例として掛け算を行う
    result = val1 * val2
    
    # 【書き込み】A3セル(0,2)に結果を書き込む
    result_cell = sheet.getCellByPosition(0, 2)
    result_cell.setValue(result)
    
    # 文字列を書き込みたい場合は .setString("テキスト") を使います
    # sheet.getCellByPosition(0, 3).setString("計算完了")

## ステップ 2: スクリプトを指定のフォルダに配置する
作成した calc_macro.py を、LibreOffice がマクロとして認識できるように専用のフォルダへ移動します。
お使いの OS に合わせて、以下のパスの中に Scripts/python というフォルダを作成し、その中にファイルを置いてください(隠しフォルダを表示する設定が必要な場合があります)。

* 
* Windows の場合:
C:\Users\<ユーザー名>\AppData\Roaming\LibreOffice\4\user\Scripts\python\
* Mac の場合:
/Users/<ユーザー名>/Library/Application Support/LibreOffice/4/user/Scripts/python/
* Linux の場合:
~/.config/libreoffice/4/user/Scripts/python/
* 

## ステップ 3: 開いている Calc から実行する
配置が完了したら、実際に Calc から動かしてみましょう。

   1. LibreOffice Calc を開きます(すでに開いている場合はそのまま)。
   2. A1 セル に 10、A2 セル に 5 など、適当な数値を入力します。
   3. メニューバーから 「ツール」 > 「マクロ」 > 「マクロを実行」 をクリックします。
   4. マクロセレクター画面が表示されるので、左側のライブラリ一覧から 「マイマクロ」 > 「calc_macro」 を選択します。
   5. 右側に my_calc_macro が表示されるので、選択して 「実行」 ボタンを押します。

結果: Calc の A3 セル に、計算結果である 50 がリアルタイムに書き込まれます。
------------------------------
## 💡 さらに便利に使うためのヒント
毎回メニューからマクロを呼び出すのが面倒な場合は、Excel と同様に Calc のシート上にボタンを配置して、ワンクリックで Python コードを起動する ことができます。

   1. Calc のメニューから 「表示」 > 「ツールバー」 > 「フォームコントロール」 にチェックを入れてツールバーを表示します。
   2. ツールバーから 「プッシュボタン」 を選択し、シート上の好きな場所にドラッグしてボタンを作ります。
   3. 作成したボタンを右クリックして 「コントロールのプロパティ」 を開きます。
   4. 「イベント」 タブ を開き、「実行時」 の横にある「...」ボタンを押します。
   5. 「マクロ」ボタンを押し、先ほどの 「マイマクロ」 > 「calc_macro」 > 「my_calc_macro」 を割り当てます。

これで、シート上のボタンを押すだけで、Python が開いているセルのデータを読み込んで一瞬で計算結果を書き戻してくれるようになります。
まずはこの方法で手元の Calc が動くか試してみてください。
もし「マクロを実行メニューに Python ファイルが表示されない」場合や、「Python 側で外部のライブラリ(pandas や numpy など)を使って高度な計算をさせたい」といったご要望があれば、追加のセットアップ手順をご案内しますので教えてください。


Q:unoを使うのはわかるが、pythonスクリプト上でpandasやmqttなど外部ライブラリは使えるのか?つまりpipでライブラリをインストール可能か?
A:
はい、Pythonスクリプト上で pandas や mqtt などの外部ライブラリを自由に使うことができ、pip でのインストールも可能です。
ただし、「LibreOfficeがどのPython環境を使って動いているか」によって pip の通し方が少し異なります。LibreOfficeの内蔵Pythonに直接インストールするか、OSの標準Python環境(あるいは仮想環境)から接続するかで、以下のようにアプローチが分かれます。 [1] 
お使いのOSや用途に合わせて、以下のいずれかの方法を実行してください。
------------------------------
## アプローチA:内蔵Pythonに pip で直接入れる(Windows向け)
Windows版のLibreOfficeは、インストールフォルダ内に専用の独立したPythonを内蔵しています。そのため、普段コマンドプロンプトで使っている pip install ではLibreOffice側にライブラリが入りません。 [2] 
以下の手順で、LibreOfficeのPythonに対して直接 pip を実行します。 [3] 

   1. PowerShell を「管理者として実行」で起動します。
   2. LibreOfficeのプログラムフォルダに移動します。
   
   cd "C:\Program Files\LibreOffice\program"
   
   3. LibreOfficeのPython(python.exe)を使って、pip をセットアップします(最初の一回のみ)。
   
   ./python.exe -m pip install --upgrade pip
   
   4. pandas や paho-mqtt などをインストールします。 [3] 
   
   ./python.exe -m pip install pandas paho-mqtt
   
   
これで、先ほど紹介した「マイマクロ」フォルダ内のPythonコードから、普通に import pandas や import paho_mqtt ができるようになります。

⚠️ Windowsで pandas(および numpy)を使う場合の注意点
LibreOfficeの内蔵Pythonは一部の標準ライブラリ(bz2 など)を欠いている場合があり、pandas をインポートする際にエラーを吐くことがあります。その場合は、LibreOffice公式が配布している拡張機能 Pandas for LibreOffice を導入すると簡単に解決できます。 [4, 5] 

------------------------------
## アプローチB:システム環境のPythonをそのまま使う(Linux / Mac向け)
LinuxやMacの場合、LibreOfficeはOSに最初から入っている「システム標準のPython」をそのまま利用するケースが多いです。 [1, 6] 
そのため、普段通りにターミナルを開いて以下を実行するだけでマクロ側にも反映されます。

pip install pandas paho-mqtt

------------------------------
## アプローチC:【おすすめ】外部マクロ(ソケット接続)にして、いつもの仮想環境(venv/poetry)を使う
「内蔵Pythonに色々入れると環境が汚れる」「使い慣れたVS Codeや仮想環境(venv)で開発したい」という場合は、Calcをサーバー化して外部の独立したPythonから操作する(外部マクロ方式) のが一番おすすめです。これなら xlwings と全く同じ感覚で扱えます。 [7] 
## 1. Calcを「待機モード」で起動する
コマンドプロンプトやターミナルから、特定のポートを開放してCalcを起動します。

* 
* Windows:

"C:\Program Files\LibreOffice\program\soffice.exe" --calc --accept="socket,host=localhost,port=2002;urp;"

* Mac:

/Applications/LibreOffice.app/Contents/MacOS/soffice --calc --accept="socket,host=localhost,port=2002;urp;"

* 

## 2. いつものPython環境(pip / venv / pandas入り)から接続する
自分の好きなPython環境に uno パッケージへのパスを通すか、接続用コードを書きます。
以下のように、コードの冒頭でソケット経由で開いているCalcを捕まえれば、あとは pandas でデータ処理した結果をそのまま画面上のCalcに流し込めます。 [1] 

import paho.mqtt.client as mqttimport pandas as pdimport uno
# 1. 起動しているCalc(ポート2002)に接続local_ctx = uno.getComponentContext()resolver = local_ctx.ServiceManager.createInstanceWithContext(
    "com.sun.star.bridge.UnoUrlResolver", local_ctx
)ctx = resolver.resolve(
    "uno:socket,host=localhost,port=2002;urp;StarOffice.ComponentContext"
)smgr = ctx.ServiceManagerdesktop = smgr.createInstanceWithContext("com.sun.star.frame.Desktop", ctx)
# 現在アクティブ(開いたまま)のドキュメントを取得doc = desktop.getCurrentComponent()sheet = doc.getSheets().getByIndex(0)
# 2. あとはいつもの外部ライブラリの処理を自由に記述!# 例:MQTTでデータ受信したり、pandasでデータフレームを作ってセルに一括書き込みdf = pd.DataFrame({"A": [10, 20], "B": [30, 40]})
# 計算結果をセルの (0,0) = A1 に書き込む
sheet.getCellByPosition(0, 0).setValue(float(df["A"].sum()))

この「外部マクロ方式」であれば、pip install pandas も poetry add paho-mqtt も、LibreOfficeの構造を気にせず100%普段通りのPython開発環境で実行可能です。
今回はどちらの運用が理想に近いですか?

* 
* Calc内のボタン等から起動したい(アプローチA・B:内蔵Pythonにpipする)
* VS Code等の使い慣れた開発環境からコードを実行してCalcを操りたい(アプローチC:ソケット接続)
* 

利用されている OS(Windows / Mac / Linux) も教えていただければ、エラーが出た際のサポートをよりスムーズに行えます。

[1] [https://ask.libreoffice.org](https://ask.libreoffice.org/t/how-to-use-python-external-libraries-in-libreoffice/90994)
[2] [https://ask.libreoffice.org](https://ask.libreoffice.org/t/how-to-use-python-external-libraries-in-libreoffice/90994)
[3] [https://python-ooo-dev-tools.readthedocs.io](https://python-ooo-dev-tools.readthedocs.io/en/latest/guide/virtual_env/windows_lo_install_pip.html)
[4] [https://ask.libreoffice.org](https://ask.libreoffice.org/t/pandas-extension-problem-pandas-installer/106273)
[5] [https://ask.libreoffice.org](https://ask.libreoffice.org/t/anouncing-pandas-for-libreoffice/97623)
[6] [https://pypi.org](https://pypi.org/project/libreserver/)
[7] [https://www.moonmile.net](https://www.moonmile.net/blog/archives/11818)


Q:Windows11とUbuntu26,04LTSの両方でCalc内のボタン等から起動したい
A;
Windows 11 と Ubuntu 26.04 LTS の両方で、「Calc内のボタンからPythonマクロを起動し、かつ外部ライブラリ(pandasやmqtt)を動かす」 ための具体的なセットアップ手順を解説します。
双方のOSで共通のPythonコードを動かせますが、外部ライブラリ(pip)の準備方法だけOSごとに少し異なります。
------------------------------
## 1. Windows 11 でのライブラリ準備
WindowsのLibreOfficeは、自身の中に「専用のPython」を抱え込んでいます。ここにライブラリをインストールします。

   1. PowerShell を「管理者として実行」で起動します。
   2. 以下のコマンドを順番に実行し、LibreOfficeのPython環境に直接インストールします。
   
   cd "C:\Program Files\LibreOffice\program"
   ./python.exe -m pip install --upgrade pip
   ./python.exe -m pip install pandas paho-mqtt
   
   
------------------------------
## 2. Ubuntu 26.04 LTS でのライブラリ準備
UbuntuでPythonマクロをガシガシ動かす場合、標準の「Snap版」LibreOfficeだとセキュリティ隔離の制限により外部ライブラリの読み込みが非常に困難になります。そのため、環境構築が圧倒的にスムーズな 「APT版(従来版)」のLibreOfficeを使用することを強く推奨 します。

   1. 端末(Terminal)を開き、APT版のLibreOfficeとPythonマクロ用コンポーネントをインストールします。
   
   sudo apt update
   sudo apt install libreoffice libreoffice-script-provider-python python3-pip
   
   2. 近年のUbuntu(24.04や26.04以降)では、システムのPython環境を壊さないよう通常の pip install が制限(PEP 668)されています。そのため、pandas はUbuntu公式のパッケージから安全に入れ、mqtt は制限解除フラグをつけてインストールします。
   
   # pandasを安全にインストール
   sudo apt install python3-pandas
   # paho-mqttをシステム環境にインストール
   pip install paho-mqtt --break-system-packages
   
   
------------------------------
## 3. 【共通】Pythonマクロコードの作成
両方のOSでそのまま使い回せる、セルを読み書きしてMQTTやPandasの処理に繋ぐベースコードです。ファイル名を my_macro.py として作成してください。

import unoimport pandas as pdimport paho.mqtt.client as mqtt
def process_calc_data(*args):
    """Calcのセルを読み込み、Pandasで処理して書き戻すサンプル"""
    # 実行中のCalcドキュメントとシートを取得
    ctx = uno.getComponentContext()
    doc = XSCRIPTCONTEXT.getDocument()
    sheet = doc.getSheets().getByIndex(0)
    
    # 1. Calcからデータを読み込む (例: A1からB3の範囲)
    # 一括でデータを取得してPandasのDataFrameにする
    cell_range = sheet.getCellRangeByName("A1:B3")
    data_tuple = cell_range.getDataArray() # 行ごとのタプル(タプルの入れ子)が取れる
    
    df = pd.DataFrame(list(data_tuple), columns=["項目", "値"])
    
    # 2. Pandasでの計算処理 (例: 値の列をすべて2倍にする)
    df["計算結果"] = df["値"] * 2
    
    # 3. Calcの指定セルに結果を書き戻す (例: C1からC3)
    for i, result_value in enumerate(df["計算結果"]):
        # getCellByPosition(列, 行) ※C列=2, 行は0始まり
        sheet.getCellByPosition(2, i).setValue(float(result_value))
        
    # 4. (参考) 必要ならここでMQTTで結果を送信するコードなども書けます
    # client = mqtt.Client()
    # client.connect("localhost", 1883, 60)
    # client.publish("calc/result", str(df["計算結果"].sum()))

------------------------------
## 4. スクリプトの配置場所
作成した my_macro.py を、それぞれのOSの以下のフォルダの中に配置してください(Scripts や python フォルダがない場合は新規作成してください)。

* Windows 11:
C:\Users\<ユーザー名>\AppData\Roaming\LibreOffice\4\user\Scripts\python\
* Ubuntu 26.04 LTS:
/home/<ユーザー名>/.config/libreoffice/4/user/Scripts/python/

------------------------------
## 5. Calc上のボタンにマクロを登録する(共通)
OSに関わらず、Calc側の操作は全く同じです。

   1. Calcを開き、適当な数値データを入力しておきます(上記コードの場合、A1:B3の範囲)。
   2. メニューの 「表示」 > 「ツールバー」 > 「フォームコントロール」 にチェックを入れます。
   3. ツールバーから 「プッシュボタン」 を選んでシート上にドラッグして配置します。
   4. ボタンを右クリック > 「コントロールのプロパティ」 を開きます。
   5. 「イベント」タブ の 「実行時」 の横にある「...」を押し、「マクロ」 ボタンをクリックします。
   6. 「マイマクロ」 > 「my_macro」 > 「process_calc_data」 を選択してOKを押します。
   7. デザインモード(ツールバーの定規と三角定規のアイコン)をオフにすれば、ボタンが押せるようになります。

これで、WindowsでもUbuntuでも、Calcのボタンをポチッと押すだけでPython(pandas/mqtt入り)のコードが裏で走り、開いているシートのセルがリアルタイムに更新されるようになります。
まずはどちらかのOSから試してみるのがスムーズです。
もしWindowsやUbuntuでボタンを押した際に 「ライブラリが見つかりません(ModuleNotFoundError)」などのエラー が出た場合は、エラーメッセージを教えていただければピンポイントで解決策をお伝えします。どちらのOSから進めますか?


Q:Calcのシートに配置したボタンからマクロを起動する設定の手順はEXCELと同様だと理解できた。で、フォルダ「python_code」内に置いたpythonコードprocess.pyを起動するCalcマクロを書いてくれ
A:
フォルダ「python_code」内に置いた process.py を呼び出すための、Calcに直接登録するマクロ(Basic)のコードを作成しました。
この方法をとることで、LibreOffice標準のマクロ配置フォルダ(Scripts/python)ではなく、あなたが自由に作成したお好みのフォルダ(例: C:\python_code や /home/user/python_code)にPythonスクリプトを置いたまま、Calcのボタンから起動できるようになります。
以下の手順に沿って設定してください。
------------------------------
## ステップ 1: Pythonコード(process.py)の準備
あなたが「python_code」フォルダに置く process.py の中身は、以下のように 「引数(*args)を受け取れる関数」 の形にしておく必要があります。

# process.py の中身の例import uno
def run_process(*args):
    """Calcから呼び出されるメイン処理"""
    ctx = uno.getComponentContext()
    # XSCRIPTCONTEXT を使って現在開いているCalcドキュメントを掴む
    doc = XSCRIPTCONTEXT.getDocument()
    sheet = doc.getSheets().getByIndex(0)
    
    # テストとして A1 セルに文字を書き込む
    sheet.getCellByPosition(0, 0).setString("Pythonから書き込み成功!")

------------------------------
## ステップ 2: Calcに登録する「呼び出し用マクロ」
Calcのボタンには、Pythonを直接指定するのではなく、Pythonを呼び出すための「LibreOffice Basic」マクロを登録します。

   1. Calcを開き、メニューの 「ツール」 > 「マクロ」 > 「マクロを編集」 を開きます。
   2. 左側の「マイマクロ」の「Standard」>「Module1」を選択します(なければ新規作成)。
   3. 右側のエディタに、以下のコードを貼り付けます。

⚠️ OS(Windows / Ubuntu)に合わせて、コード内のフォルダパス(YOUR_DIR_PATH)を書き換えてください。

Sub CallPythonProcess
    Dim MasterScriptProviderFactory As Object
    Dim MasterScriptProvider As Object
    Dim Script As Object
    Dim Url As String
    Dim Path As String
    
    ' 【重要】process.py を置いているフォルダパスを指定してください
    ' Windowsの例: "C:/python_code/" (※バックスラッシュではなくスラッシュ / を使います)
    ' Ubuntuの例:  "/home/ユーザー名/python_code/"
    Path = "C:/python_code/" 
    
    ' LibreOfficeが識別できるスクリプトURLの形式に変換します
    Url = "vnd.sun.star.script:process.py$run_process?language=Python&location=user:../../../" & Path
    
    ' スクリプトプロバイダーを呼び出してPythonを実行
    MasterScriptProviderFactory = createUnoService("com.sun.star.script.provider.MasterScriptProviderFactory")
    MasterScriptProvider = MasterScriptProviderFactory.createScriptProvider("")
    Script = MasterScriptProvider.getScript(Url)
    
    ' Pythonコードの実行
    Script.invoke(Array(), Array(), Array())
End Sub

------------------------------
## ステップ 3: ボタンへの登録

   1. 編集画面を閉じ、Calcのシート上に配置したボタンを右クリックして 「コントロールのプロパティ」 を開きます。
   2. 「イベント」タブ の 「実行時」 の横にある「...」ボタンを押します。
   3. 「マクロ」 ボタンを押し、「マイマクロ」 > 「Standard」 > 「Module1」 > 「CallPythonProcess」 を選択してOKを押します。

これで設定は完了です!
シート上のボタンを押すと、Basicマクロを経由して、指定した「python_code」フォルダ内の process.py(関数名: run_process)が瞬時に実行されます。
まずはこの方法で、指定フォルダの process.py が無事に起動するか試してみてください。
もしパスの書き方や、実行時に 「スクリプトが見つかりません」といったエラー が出た場合は、設定した具体的なフォルダパスを添えて教えていただければ、URLの記述を修正します。

Q:Calcの指定フォルダに置けば、この手順はもっと簡単になるのか?
A:
はい、Calc(LibreOffice)の指定フォルダに置けば、先ほどのBasicマクロ(VBAのようなコード)を書く必要が一切なくなるため、手順は圧倒的に簡単になります。
指定フォルダに置いた場合は、Excelと全く同じように、Calcの画面操作だけでボタンに直接Pythonコードを登録できるようになります。
具体的な違いを比較すると以下のようになります。
## 手順の比較

| 作業ステップ | 自由なフォルダ(先ほどの手順) | 📌 Calcの指定フォルダ(おすすめ) |
|---|---|---|
| 1. コードを書く | 必要(process.py) | 必要(process.py) |
| 2. ファイルの配置 | 好きな場所に置く | 指定フォルダにポイッと置くだけ |
| 3. 中継コードの作成 | Basicマクロをわざわざ書く必要あり | ❌ 一切不要 |
| 4. ボタンへの登録 | Basicマクロを選択する | Pythonファイルを直接選択するだけ |

------------------------------
## 指定フォルダに置いた場合の、最も簡単な登録手順## ステップ1:指定フォルダに process.py を置く
OSに合わせて、以下のフォルダ(無い場合は作成してください)にファイルを直接保存または移動します。

* Windows 11:
C:\Users\<ユーザー名>\AppData\Roaming\LibreOffice\4\user\Scripts\python\process.py
* Ubuntu 26.04 LTS:
/home/<ユーザー名>/.config/libreoffice/4/user/Scripts/python/process.py

## ステップ2:Calcのボタンに直接登録する

   1. Calcのシートに配置したボタンを右クリック > 「コントロールのプロパティ」 を開きます。
   2. 「イベント」タブ の 「実行時」 の横にある「...」ボタンを押します。
   3. 「マクロ」 ボタンをクリックします。
   4. マクロセレクター画面が開くので、「マイマクロ」 > 「process」 > 「run_process」 を選択してOKを押します。

これだけで設定完了です。プログラムの専門知識がない人でも簡単にボタンへ割り当てられます。
------------------------------
## 💡 どちらを選ぶべき?(トレードオフ)

* 指定フォルダに置く(簡単・おすすめ)
ボタンに登録する手順を一番シンプルにしたい場合や、自分だけで使うツールを開発する場合は、この指定フォルダ方式がベストです。
* 自由なフォルダに置く(先ほどの手順)
「Gitなどのバージョン管理ツールでプロジェクトごとにソースコードを1つのフォルダ(例: C:\my-project\)にまとめたい」という場合や、「他の人にファイルを配る際、パスを固定して配布したい」という場合は、先ほどのBasicマクロを挟む方法が活きてきます。

まずは一番手軽な「指定フォルダ(Scripts/python)に置く方法」から試してみるのがスムーズです。
指定フォルダへの配置は無事にできそうでしょうか?
もしフォルダを開くのが難しければ、Windowsの「ファイル名を指定して実行」やUbuntuのコマンドを使って一発で該当フォルダを開く方法をご案内します。