ニュース

「Excel」→「LibreOffice」移行をマクロでも、VBAっぽく使えるPythonライブラリが仮公開

その名も「Excel Like UNO」、モダンな設計でIDEの開発支援や保守の面でもメリット

「Excel Like UNO」で将棋盤をレンダリングするサンプルスクリプトを動かした様子

 「Microsoft Excel」のVBAのように「LibreOffice Calc」を操作できるようにするライブラリ「Excel Like UNO」が1月5日、「GitHub」で公開された。「Excel」マクロからの移行を支援するライブラリで、仮公開の段階ではあるものの、実際に動作させることもできる。

 「LibreOffice」の表計算アプリ「Calc」にはVBA互換モードがあり、「Excel」マクロをある程度動かすことができる。しかし、「LibreOffice」への移行を検討するのであれば、長期的な保守も見据えて「Python」などのモダンなスクリプト言語を採用したいところだ。

 しかし、「Calc」に備わっているAPI「UNO」(Unified Network Objects)は複雑で、扱い方もVBAと大きく異なる。この差異を吸収するライブラリがなければ、移行は容易に進まないだろう。

 また、ライブラリを開発するのであれば、「Visual Studio Code」などで快適に開発するためにも型定義を充実させ、静的解析をサポートし、入力補完などの開発支援機能の恩恵を享受できるようにしたいところだ。

 「Excel Like UNO」は、そうした目的で開発されたPythonライブラリ。PythonコードでもVBAに似たメソッド(cell.text、sheet.range("A1:C1").merge(True) など)でスプレッドシートを操作できるようにしてVBAに慣れたユーザーでも扱いやすくなっているほか、データをゲッター・セッター(getText()、setText()など)ではなく、「value」「text」プロパティで入出力できるモダンな設計となっている。「UNO」APIに関する知識もあまり要らないようだ。

 「Excel Like UNO」のソースコードは「GitHub」で公開されており、利用するにはリポジトリを適当な場所へクローンしてパスを通しておく必要がある。

git clone https://github.com/moonmile/ExcelLikeUno.git
cd excellikeuno
$env:PYTHONPATH = "${PWD}\src"

 「Calce」を外部から操作する場合は、以下のコマンドで「LibreOffice」を「UNO サーバー」として起動しておく。

& "C:\Program Files\LibreOffice\program\soffice" `
--accept="socket,host=localhost,port=2002;urp;" `
--norestore --nologo

 あとは、「LibreOffice」内蔵の「Python」でスクリプトを実行すればよい。

& 'C:\Program Files\LibreOffice\program\python' <スクリプトファイル>

 さらに、記述は少し煩雑になるようだが「LibreOffice」マクロとしても利用可能。このあたりの使い勝手は、今後のアップデートで改善されるようだ。

「LibreOffice」マクロとしても利用可能(作者ブログより引用、以下同)
実行結果

 「LibreOffice」のスクリプトやマクロをVBAライクに記述できれば、移行のハードルは低くなる。それでいて、オフィスアプリ内蔵のエディターではなく「Visual Studio Code」のようなコードエディターが使えるのも魅力。入力補完やAIエージェントなどの開発支援をうけるのが容易で、「GitHub」と連携してソースコードを管理できるなど、保守の面でもメリットが大きい。「Excel」から「LibreOffice Calc」への移行を考えているならば注目したいプロジェクトといえるだろう。サンプルスクリプトも充実しているので、まずそれを動かすところから始めてはいかがだろうか。