Home > コンピュータ > LibreOffice > マクロ

LibreOfficeでマクロを使う

新規作成日 2017-11-22
最終更新日

LibreOfficeは、Apache OpenOfficeから派生したアプリケーションです。そのため、LibreOfficeとApache OpenOfficeは、多くの場合、マクロに互換性がありますが、一部の機能では、動作に違いがあることが知られています。

Microsoft Officeのマクロ言語である、VBAに関する情報は、現在では、多くの書籍が出版され、インターネット上でも多くのサイトで使い方が紹介されています。

一方、LibreOfficeのマクロに関する情報は、かなり限られており、LibreOfficeのマクロを作成する情報を集め、実際にマクロを作成したいと考えるとき、必要な情報を集め、実際に動作するか検証していく必要があるため、とても手間がかかります。

現実的には、LibreOfficeでマクロを作成するための情報を集めるには、英語で配信されている開発者向けのメーリングリストに登録し、情報を集めることが必要です。

しかし、Officeアプリケーションでマクロを使用して実現したい機能は、マクロを作成することが目的ではなく、Officeアプリケーションで書類を作成することが目的です。ほとんどの場合、マクロを作成して、作業を自動化するために必要な作業は、評価されることがありません。

そのため、素早く効率的にマクロを作成できるように、マクロを作成するために必要な情報を収取し、整理しておく必要があります。

マクロとは

マクロとは、アプリケーションを自動化する機能のことです。何度も繰り返し同じことを行う操作や手順をプログラムとして保存し、呼び出すことで、特定の操作や手順を実行することができるので、うまく利用するとかなりの作業量軽減とともに、間違いによるミスを防ぐことができます。

どこまで、何を自動化できるか、どれくらいの時間でマクロを作成できるかは、マクロを作成する人の知識や技能に依存するため、自分が無理なく実現できる範囲と作業量を考えて、利用する必要があります。

実務の合間にマクロを開発する際の注意

マクロを利用することで、複数の操作が必要な作業を、マクロを実行するだけで処理することができます。これにより、作業の軽減と間違いを低減することが可能になります。さらに、作業に習熟していない人に、作業の内容を教えることなく、作業を移譲することも可能になります。

一方で、マクロの作成には、手間と時間がかかりますが、実際にマクロを使用して処理する作業は、マクロを使う人とは別の人が行うことから、マクロを作成する人の作業と能力を軽視する人もいます。他人が利用するマクロを作成する場合は、マクロを作成する人が自分で、職場でどのような立ち位置を取るかをよく考えマクロを公開するか、秘匿するかを判断することが大切になります。

LibreOfficeマクロの状況

LibreOfficeマクロは、一見、複数の言語が共存している状況になっています。

  • StarBasic
  • VBA(VBA互換モード)
  • BeanShell (JAVA)
  • Javascript
  • Python
  • ユニバーサル・ネットワーク・オブジェクト「Universal Network Objects」 (UNO)
  • ディスパッチャー 「Dispatcher」

LibreOfficeマクロの本体は、ユニバーサル・ネットワーク・オブジェクト「Universal Network Objects」 (UNO)です。さらに、LibreOfficeを直接操作する仕組みとして、ディスパッチャー 「Dispatcher」を持っています。

LibreOfficeマクロは、StarBasicやVBA(VBA互換モード)など、様々な言語が利用できますが、それらは、 UNOのラッパーです。それぞれの言語から、UNOに変換されて動作しています。

LibreOfficeでは、ツールメニューの中に、マクロの項目があり、マクロの管理を見ると、記述する言語に「LibreOffice Basic」、「BeanShell」、「Javascript」、「Python」が利用できることがわかります。

LibreOfficeのマクロで利用できる言語

また、他の開発言語からLibreOfficeを操作できるAPIを利用することで、外部の開発言語から、LibreOfficeを操作することもできます。

しかし、まだ、LibreOfficeのマクロに関する情報は少なく、一部の情報発信者は、公開されているLibreOfficeのソースコードから、マクロの機能を探し出しているようです。

StarBasicとVBA互換モード

LibreOfficeで、現在のところ最も情報が入手しやすいのは、StarBasicとVBA互換モードです。次に、Python です。まずは、Basicで始め、ある程度利用できるようになった後、更に、UNOも加えて利用するステップをお勧めします。

LibreOfficeとApache OpenOfficeのマクロは、StarBasicから進化しています。Microsoftが、提供するVBAとは、異なるものであることに注意してください。

LibreOfficeとApache OpenOfficeでは、Microsoft Officeから移行するユーザーの利便性を考え、互換性に対する配慮がされています。しかし、基本的には、LibreOfficeとApache OpenOfficeのマクロは、Microsoft OfficeのVBAとは、異なるものであること考える必要があります。

このため、StarBasicとVBAは、個別に理解する必要があります。

VBA互換モード

初期設定の状態では、Microsoft Officeで作成したVBAマクロは動作しない場合があります。

LibreOfficeでVBAマクロを実行する状況には、大きくは、次の2つの場合が考えられます。Microsoft Officeで作成したドキュメントにマクロが含まれている場合、LibreOfficeで作成した文書に、VBAスタイルでマクロを記述しようとする場合です。

LibreOfficeで作成した文書に、VBAスタイルでマクロを記述しようとする場合には、コンパイラオプションを指定しないと実行することができません。

実行環境

私は、ja-jpロケールのWindows 10 64 bit環境で、64 bit版のLibreOffceを使用しています。私が、他の環境で作業することは、まず、ありません。

LibreOfficeは、Apache OpenOffice から、分岐したプロジェクトです。LibreOfficeは、Apache OpenOfficeから、独立して開発されており、時間がたつに連れ、API、機能、およびユーザー・インターフェイスは、それほど類似しなって行くものと思われます。

そのため、このサイトで紹介するマクロが、Apache OpenOfficeで、動作しない可能性があります。

マクロを使用するために必要な設定

マクロは、インストールしたままの設定では利用できません。これは、悪意のあるマクロが含まれた文書を配布することで、利用者に気が付かれないまま、そのマクロが含まれた文書が、コンピュータを操作することを防ぐためです。使用する際は、マクロセキュリティ設定を変更する必要があります。

LibreOfficeのマクロのドキュメントとインターネット上の情報

LibreOfficeでマクロを使おうとすると、情報がどこにあるか探すところから大変な思いをします。

そして、誰でも最初は、情報の存在するインターネット上のURLを集めるところから始めることになります。 わたしも、例に漏れず、インターネット上のURLを集めるところから始めました。 検索エンジンだけでは、効率的に探すことが難しいところに注意が必要です。

LibreOfficeのドキュメントの作成は、あまり力が入っていないようなので、マクロ開発の情報は、OpenOfficeのドキュメントも合わせて探す必要があります。

予備知識

マクロプログラミングを始める前に、知っておいたほうがいいと思われる予備知識的な内容

  1. LibreOfficeで、ドキュメントの中に存在するマクロの内容を確認する

    ドキュメントの中にあるコードの内容を確認する

開発者コミュニティ

外部アプリケーションからLibreOfficeを操作する

LibreOfficeは、「Java」,「C#」,「C++」,「Python」から操作できる仕組みが用意されています。これらの言語を使える場合は、マクロからではなく、これらの言語から自動化する方法も選択できるようです。

LibreOfficeのSDKをダウンロードして、インストールする。

外部アプリケーションからLibreOfficeを操作するためには、SDKをダウンロードして、インストールします。そして、その中にあるライブラリを使用してプログラムを作成します。

このエントリーをはてなブックマークに追加