OOoでOffice 12のVBAロックインから抜け出せるか?OOo 2.0が変えるオフィスアプリ基準 第7回(1/2 ページ)

OpenOffice.org 2.0が変えるオフィスアプリ基準の7回目では、オフィスアプリケーション内の操作を自動化する「マクロ」について触れる。MS Officeとの互換性はいかに。

» 2005年09月27日 09時16分 公開
[可知 豊,ITmedia]

 多くの企業でオフィススイート「Microsoft Office」の採用が進んでから10年近くになる。事務処理の自動化をVBAで行っているところでは、そのソフトウェア資産もかなりの量になっているだろう。そのためか、筆者にはOpenOffice.orgに興味を持っている人から「MicrosoftのVBAとの互換性はあるのですか?」という質問が、よく寄せられる。

 そこで「OpenOffice.org 2.0が変えるオフィスアプリ基準」の今回第7回目では、OpenOffice.orgの自動処理機能について紹介しよう。マクロBasicだけでなく、VBAからの移行ソリューションについても触れていく。

 なお、OpenOffice.orgは現在、2.0の正式リリースに向けてβ2リリースされている段階だ(関連記事)

OpenOffice.orgマクロの基本仕様とは

 OpenOffice.orgではマクロ機能を備えており、ソフト上での特定操作が自動化ができる。Basic言語によるマクロプログラムから、OpenOffice.orgのほぼすべての機能を操作できるのだ。

 このためには、OpenOffice.org上で操作をそのまま記録可能な「マクロレコーダー」を備えており、記録には、[ツール(T)]→[マクロ(M)]→[マクロの記録(A)]の手順で呼び出すことになる。

 ただし記録された操作は、OpenOffice.orgの内部コードを呼び出す記号の羅列になってしまうため、この操作だけではマクロBasicのサンプルとして使えない。また「スタイルと書式」の設定変更など、一部の操作は記録されないのだ。

画面■マクロレコーダーで操作を記録すると、Basicのコードとして記録される。ただし、内部コードを呼び出す記号の羅列になってしまう

 マクロBasicのコードは、専用の開発環境で管理する。この開発環境は、コードを編集したり、変数の値の追跡、そしてステップ実行するといったデバック作業に対応している。

 開発環境を呼び出すには、[ツール(T)]→[マクロ(M)]→[マクロの管理(O)]→[(プログラミング言語)]の選択となる。OpenOffice.org 2.0では、Basic以外のプログラミング言語にも対応しており、Python、BeanShell、JavaScriptで操作ができる。実はOpenOffice.orgのマクロBasicは、数年前から機能拡張が停止しており、今後はこのような汎用性の高いスクリプト言語に移行していくと考えられる。

VBAを読み込むとどうなるのか?

 それでは、OpenOffice.orgのマクロBasicは使い物にならないのだろうか? また、MicrosoftのVBAからの移行は不可能なのだろうか? 実のところ、同じようなBasic言語なので、文法の面では大きな違いはない。実際に、Excelで記述したマクロBasicをOpenOffice.orgに読み込むとどうなるか、標準設定で試してみた。

 まず、Excel 2003で、ダイアログボックスを表示するマクロプログラムを作成し、ファイル保存した。このファイルをOpenOffice.org(1.9.m104)で読み込むと「マクロを含むファイルなのでマクロを有効にするか」というセキュリティ警告ダイアログが表示される。

 ここで"マクロを有効にする"とマクロプログラムが読み込まれる。読み込まれたマクロプログラムは、Remコマンドでコメントアウトされ、前後に「Sub〜End Sub」が付加されるのだ。このRemコマンドとSub〜End Subを削除すると、マクロプログラムを実行できる。

画面■Excelのマクロプログラムを読み込むと、Remコマンドが付加されてコメントアウトされる。簡単なプログラムであれば、Remコマンドを削除するだけで実行できる

 互換性がないのは、主にプログラムの操作対象になるオブジェクトだ。

 たとえば、Excelでは選択中の範囲を「Application.Selection」と記述するが、OpenOffice.orgでは「ThisComponent.CurrentSelection」と記述するといった違いがある。これは、プログラムの内部構造や設計思想が違っているためだ。このような違いがあるために、Microsoft OfficeのVBAマクロプログラムをそのままではOpenOffice.orgで実行できない事情がある。

 VBAとOpenOffice.org Basicの機能比較表を次に示す。

表■VBAとOpenOffice.org Basicの機能比較表(「OpenOffice.org日本ユーザー会」秋山氏作成によるもの)

 なお、OpenOffice.orgでExcelファイルを読み込み、マクロプログラムを修正したりセルにデータを入力して、再度Excel形式で保存すると、修正したマクロプログラムは保存されず、オリジナルのマクロプログラムと入力したデータが保存される。つまり、Excelで作成したファイルをOpenOffice.orgで修正しても、マクロプログラムには問題が起きないようになっている。Excelファイルを読み込み/保存する際、マクロプログラムをどのように扱うかは、[ツール]→[オプション]の[読み込みと保存]→[VBA属性]で設定できる。

       1|2 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.

注目のテーマ