コンピューターの用途は、計算だけでなく、データを収集管理することにも使用されています。
情報の入力は、現在でも、その多くは、人の手によって行う必要がありますが、入力した情報が適切かどうかを判断したり、入力された情報を加工、整理したりする場合は、コンピューターに自動で処理させたいという需要は、これからもなくなることは無いと思われます。
マクロとは
マクロとは、アプリケーションを手作業で操作する作業をマクロ言語で記述することです。一旦、マクロとして記述すれば、操作を記述したマクロを呼び出すだけで、何度も繰り返し同じことを行うことができます。マクロを使うことで、何度も繰り返し行う同じ操作や手順を一度に実行する事ができます。
どこまで、何を自動化できるか、どれくらいの時間でマクロを作成できるかは、マクロを作成する人の知識や技能に依存するため、自分が無理なく実現できる範囲と作業量を考えて、利用する必要があります。
LibreOfficeで利用できるマクロ言語
LibreOfficeマクロでは、複数の開発言語で記述できます。
- Libreoffice Basic(StarBasic)
- VBA(Libreoffice Basic内のVBA互換モード)
- BeanShell (JAVA)
- Javascript
- Python

UNOオブジェクト
LibreOfficeのそれぞれの動作が、ユニバーサル・ネットワーク・オブジェクト「Universal Network Objects」 (UNOオブジェクト)としてまとめられています。それぞれの開発言語とUNOオブジェクトは、UNOブリッジによって、接続されています。
そのため、UNOブリッジを新たに用意することで、さまざまな開発言語で操作できる柔軟性を持っており、マクロ言語だけでなく、LibreOffice SDKを使用することで、Java、python、C++、Visual BasicやC#などのCLI言語からもLibreOfficeを操作できます。
既に習得した開発言語でLibreOfficeが操作できる場合、言語を習得する時間を省略することができ、より短時間で作業自動化に取り組み始めることができます。
LibreOfficeのマクロを学ぶための手順
LibreOfficeのマクロは、使用する UNOオブジェクトが、理解できないと利用できません。そのため、最も情報が手に入りやすい マクロの記録を使用して、LibreOffice_Basicから、学び始める必要があります。
手順の一例を示します。
- マクロを使用するための設定を行う
- Libreofficeで、マクロを使用する際に行ったほうが良い設定
Libreofficeで、マクロを使用する前に、行ったほうが良い設定について紹介します。
- Libreofficeで、マクロを使用する際に行ったほうが良い設定
- マクロの記録で、マクロを生成(LibreOffice_Basic)し、それを元に、基本的な操作に対応するコードを見つけます。インターネット上など、他の誰かがまとめた情報があればそれも利用する
- 基本的な操作を行うコードを、あとから参照しやすいように整理する
- 変数宣言やループなど、LibreOffice_Basicの基本的な文法を理解する
基本的な操作を行うマクロを見つけ、あとから探しやすいように管理する
実行したいマクロのコードを把握したら、あとで使いやすい形にまとめて、探しやすいように管理することが大切です。「逆引き」本の形式が、参考になります(しかし、LibreOfficeのマクロ向けのものは、存在しないと思います)。
コードを見る際の着目点
何らかの操作を行うコードは、「場所」と「操作」を指定しています。それに対応するコードが、どのような記述なのかに着目します。
コメント
コードを読む際、コメントを追加していくと読みやすくなります。
コメントは、文頭に「Rem」、あるいは「'」(シングルクォーテーション)に続くスペースのあとに記述できます。「Rem」の記述は、大文字、小文字の区別はされないため、「rem」でも「REM」でも認識されます。
サブルーチンと関数
LibreOfficeマクロは、Subで始まり、End Subで終わります。あるいは、Functionで始まり、End Functionで終わります。
キーワードSubは、サブルーチンの始まりを定義し、End Subは、サブルーチンの終わりを定義します。
サブルーチンを使用するときは、呼び出したいサブルーチンの名前を行に入れてください。名前の前に、キーワードCallを付けることもできます。
サブルーチンと関数の名前は、モジュール内で、1つだけである必要があります。それらは、名前にスペースを使用することも含めて、変数と同じ命名規則に従います。
Visual Basicでは、サブルーチンの前に、publicやprivateのような、オプション・キーワードを付けることができます。OOo 2.0以降では、あなたは、publicやprivateとして、ルーチンを定義することができますが、CompatibilityMode(True)が最初に使用されない限り、ルーチンは、常にpublicです。
キーワードFunctionは、引数(ひきすう)を指定して、実行すると、戻り値として、結果を取得できます。型が、宣言されていない場合、戻り型は、デフォルトでVariantになります。関数が終了する前に、いつでもどこでも戻り値を代入することができます。最後に割り当てられた値が、返されます。
参考:OOME_4.0 3.36 Subroutines and functions
基本的な操作を行うマクロ
予備知識
マクロプログラミングを始める前に、知っておいたほうがいいと思われる予備知識的な内容
- LibreOfficeで、ドキュメントの中に存在するマクロの内容を確認する
ドキュメントの中にあるコードの内容を確認する
- Libreoffice Basic言語部分の知識
プログラムの制御構文、変数や演算子など、Basicマクロ言語として、共通に利用されてる知識やルールがあります。一般のプログラミング言語では、これらの知識を把握するところから始める必要があります。
- BasicでLibreofficeのマクロを作成する
LibreOfficeで、マクロを作成する情報が、現在のところ最も入手しやすいのは、StarBasicとVBA互換モードです。
LibreOfficeとApache OpenOfficeのマクロは、StarBasicから進化しています。Microsoftが、提供するVBAとは、異なるものであることに注意してください。
- Basicマクロで、Witer文書を操作する
Writerで使用するマクロは、主に文書の入力作業の軽減と推敲の支援、レイアウトの統一することを目的に作成します。
- Basicマクロで、Calc文書を操作する
Officeアプリケーションのマクロの情報は、表計算ソフトについての情報が最も多いです。
LibreOffice Calcも同様に、インターネット上のマクロに関する情報は、Calcのものが多く紹介されています。
- LibreOfficeのマクロのドキュメントとインターネット上の情報
マクロに関する情報は、インナーネット上のドキュメントを探す必要があります。
開発者コミュニティ
- LibreOffice 開発者コミュニティ
- LibreOffice-LibreOffice開発と解説
LibreOffice 開発者向けメーリングリストの申し込みページの和訳です。このページからは申込みできませんが、申し込む際の参考にして下さい。
- LibreOffice 開発者向けメーリングリストのアーカイブ
- LibreOffice Development
LibreOfficeを開発言語から操作する
LibreOfficeマクロの本体は、ユニバーサル・ネットワーク・オブジェクト「Universal Network Objects」 (UNO)です。さらに、LibreOfficeを直接操作する仕組みとして、ディスパッチャー 「Dispatcher」を持っています。
LibreOffice SDKを別途ダウンロードし、インストールする事で、マクロではなく、開発言語を使ってLibreOfficeを操作することができます。LibreOfficeでは、「Java」,「C#」,「C++」,「Python」から操作できる仕組みが用意されています。
LibreOffice SDKには、サンプルコードも含まれている(「C:\Program Files\LibreOffice\sdk\docs」(64bit版の場合))ので、有効に利用しましょう。
SDKは、「C:\Program Files\LibreOffice\sdk」にインストールされます。(64bit版の場合)
