「LibreOfficeでExcelのVBAマクロは動く?」
「LibreOfficeのマクロ機能はVBAと互換性がある?」
「ExcelのVBAマクロをLibreOfficeで動かす方法や、マクロ言語の違いを知りたい!」
LibreOfficeは無料で使えるオフィススイートですが、Excel VBAマクロとの互換性が気になる方も多いはず。
実際、LibreOffice CalcではExcel VBAのマクロがそのままでは完全に動作しません。
本記事では、LibreOfficeのマクロ機能とExcel VBAの互換性、動作の違い、VBAマクロの変換方法、LibreOfficeでのマクロの使い方 を詳しく解説します!
Contents
LibreOfficeのマクロとExcel VBAの互換性はある?

✅ LibreOfficeはVBAマクロと部分的に互換性があるが、完全ではない!
項目 | LibreOfficeの対応状況 | 注意点 |
---|---|---|
VBAの基本的な構文(変数・条件分岐・ループ) | 〇 (ほぼ互換性あり) | 一部の関数は異なる動作をする可能性あり |
Excelのオブジェクト(ワークシート、セル、範囲) | △ (部分的に互換性あり) | LibreOfficeのオブジェクトモデルと異なるため、修正が必要 |
ユーザーフォーム(UserForm) | ✖ (互換性なし) | LibreOfficeでは独自のダイアログ管理が必要 |
ActiveXコントロール | ✖ (未対応) | 代替手段なし |
Excel VBAのイベント処理(Worksheet_Changeなど) | △ (部分的に対応) | LibreOffice独自のイベント処理に書き換えが必要 |
VBAでのファイル操作 | 〇 (基本的な操作は可能) | パス指定の違いに注意 |
📌 「シンプルなVBAマクロは動作するが、複雑なマクロは修正が必要」と考えるのがベスト!
LibreOfficeで使えるマクロ言語

LibreOfficeでは、VBAとは異なる独自のマクロ言語をサポートしています。
✅ LibreOfficeで使える主なマクロ言語
- LibreOffice Basic(StarBasic) → VBAに近い構文で記述可能(互換性は部分的)
- Python(UNO API経由) → 高度なスクリプトが可能で、LibreOfficeで推奨されるマクロ言語
- JavaScript → LibreOfficeの拡張機能で利用可能
- BeanShell、Java → 高度なマクロ開発に適用可能
📌 LibreOffice Basic(StarBasic)はVBAに近いため、VBAマクロの移行には最適!
LibreOfficeでExcelのVBAマクロを動作させる方法

✅ 【手順】LibreOffice CalcでVBAを有効化する
- LibreOfficeを開く
- 「ツール」→「オプション」→「LibreOffice」→「詳細」を選択
- 「VBAサポートを有効にする」にチェックを入れる
- 「OK」をクリックし、LibreOfficeを再起動
📌 VBAサポートを有効にすると、基本的なVBAマクロがLibreOffice Basicで動作しやすくなる!
✅ 【ExcelのVBAマクロをLibreOffice Basicに変換する方法】
- ExcelのVBAコードをLibreOffice Calcにコピー
- 「ツール」→「マクロ」→「マクロの管理」→「LibreOffice Basic」を開く
- 「新規作成」でマクロを登録し、VBAコードを貼り付け
- 構文をLibreOffice Basicの形式に修正(例:Excelの「Cells」を「getCellByPosition」に変更)
- 「実行」をクリックし、動作確認
📌 オブジェクトの参照方法や関数の違いを修正すれば、VBAマクロをLibreOfficeでも利用可能!
LibreOfficeでExcel VBAマクロを動かす際の注意点
✅ VBAとLibreOffice Basicの違い
VBA(Excel) | LibreOffice Basic(Calc) |
---|---|
Cells(1,1).Value = "A1" | Sheet.getCellByPosition(0,0).Value = "A1" |
Worksheets("Sheet1").Range("A1").Value | ThisComponent.Sheets.getByName("Sheet1").getCellRangeByName("A1").Value |
MsgBox "Hello World" | MsgBox "Hello World", 0, "LibreOffice" |
📌 シートの参照方法やセルの指定方法が異なるため、修正が必要!
よくある質問(FAQ)

Q. LibreOfficeでExcelのVBAマクロはそのまま動作しますか?
A. いいえ、完全には動作しません。
基本的なコードは動作する場合がありますが、Excel特有の関数やオブジェクトを使用している場合は修正が必要です。
Q. LibreOfficeのマクロでVBAの代わりに何を使うべきですか?
A. LibreOffice Basic(StarBasic)が最もVBAに近い言語ですが、Pythonマクロの使用も推奨されています。
Q. Excel VBAのマクロをLibreOfficeで動かすにはどうすればいいですか?
A. LibreOfficeのVBAサポートを有効にし、LibreOffice Basicの構文に合わせてコードを修正する必要があります。
Q. LibreOfficeのマクロをExcelで動かせますか?
A. いいえ、LibreOffice BasicはVBAとは異なるため、そのままでは動作しません。
Excelで使用するには、VBAの構文に書き換える必要があります。
Q. LibreOfficeでExcelマクロを再現する場合の最適な方法は?
A.
① LibreOffice Basic(VBAに近い)を使う
② Pythonマクロを使用する
のどちらかがおすすめです。
まとめ
✅ LibreOfficeはExcel VBAと完全な互換性はないが、基本的なマクロは部分的に動作する!
✅ VBAマクロをLibreOfficeで動かすには、構文の違いを修正する必要がある!
✅ Excel VBAをLibreOfficeで使うなら、「VBAサポートを有効にする」設定をONにしよう!
📌 LibreOffice Basicを活用して、Excel VBAのマクロをLibreOfficeでも使えるようにしましょう!
参考情報URL
🔗 LibreOffice公式サイト - 最新版のダウンロード・情報
🔗 LibreOfficeとVBAの違い(公式ドキュメント)