タイトル【MacWIRE配信予定】Office v.Xで使うREALbasicは実用にはちょっと支障ありカテゴリー開発ツール, 文書作成アプリケーション
作成日2002/1/30 16:28:6作成者新居雅行
Office v.X for Macのアプリケーションには、Visual Basicだけでなく「REALbasic」というメニューがついているのに驚いた人も多いかもしれない。REALbasicは確かにOffice Automationという機能によって、REALbasicで作ったアプリケーションから、Excelなどをプログラムでコントロールすることができた。Visual BasicもREALbasicも、どっちもBasic言語だけにある意味では「相性のいい」組み合わせだ。また、以前に記事で報告したように、Office v.XのVisual Basicの機能は全然進化しておらず、デバッグなどの作業がやりづらい。本格的なプログラム作成はREALbasicか…と思いたいところだが、残念ながらそれはどうもまだまだ問題があるようだ。

◇Office v.Xでは、マクロ機能にREALbasicが加わった
 

REALbasicは、Real Software社が開発している開発ツールで、Carbon対応によりMac OS Xでもネイティブアプリケーションを生成できる。Pro版だとWindows版のアプリケーションも作成できるので、手軽な開発ツールとして確固とした地位を築いた。日本ではアスキーが代理店となっている。本家のVisual Basicと同様、容易に開発ができる点に加えて、データベース利用についてもさまざまな配慮があり、業務アプリケーションを構築するという世界でも耐えうるスペックとなっている。Office対応のプラグインによって、REALbasicからOfficeのアプリケーションをコントロールできるようになっている。Officeでは、REALbasic 3.5以降での対応ということになっているが、現在は3.5.2の日本語版が最新版だ。サンプル版での利用ということも不可能ではないが、実質的にプログラムを作成するとなるとライセンスを購入する必要がでてくるだろう。

まず、ExcelなどからREALbasicを使うには、REALbasicのアプリケーションとREALbasicのPluginsフォルダを、Microsoft Office Xフォルダの中のOfficeフォルダに移動、ないしはコピーをしないといけない。REALbasicのアプリケーションがこのフォルダにないといけないようだ。たとえば、Officeフォルダの中に、REALbasicフォルダがあってその中にアプリケーションやプラグインがある…というのではだめなのである。また、Pluginsフォルダには、もちろん、Office Automationのプラグインをダウンロードして入れておく必要がある。

◇Mac OS XではREALbasicはOfficeフォルダにないといけない
 

これは少し不便ではあるのだが、もっと問題なのは、REALbasic本体がOfficeフォルダになくても、Excelなどからメニュー呼び出しできてしまうことである。もっとも、REALbasic側の対応が進んで、Officeフォルダになくてもいいようになることを見越してのことだとは思うが、いきなり使おうとして面喰らうかもしれないので、フォルダ位置は注意しよう。
もっと不便なのは、REALbasicで生成したアプリケーションもOfficeフォルダになければならないということだ。別のフォルダにおいてダブルクリックして実行してもエラーになる。つまり、Excelと連動させたいようなシステム構築においてはちょっと自由度が下がってしまうという問題がある。

さて、実際のプログラミングだが、Visual Basicでのプログラミング経験があれば、Excelなどのプログラミングについてはほとんど迷うことはないかもしれない。以下の図は、Office Automationのプラグインセットにあったサンプルプログラムを改良したプログラムだ(もとのプログラムはちょっとあんまりだったもので…)。ウインドウにリストがあって、ボタンがある。ボタンをクリックすると、リストの内容をExcelのワークシートにコピーするといったものだ。

◇ExcelをコントロールするREALbasic側のプログラム
 

プログラムの内容を見る前に実行結果をみてもらおう。REALbasicで実行してボタンをクリックすると、Excelでは新しいウインドウが開き、シート名を変更してセルにリストにあるデータを展開し、合計値を計算している。ただ、A4のセルに見られるように、文字化けしているのが大きな問題である。

◇Mac OS XではREALbasicはOfficeフォルダにないといけない
 

つまり、ソースに記述した日本語がきちんととおっていないというのは、プログラムを作る上ではかなり大きな支障になるだろう。REALbasicは日本語版を利用しているが、何か設定があるのと思って探したけど、該当するものは見つからなかった。なお、同じようにワークシート上のセルの文字列を取り出した場合でも、セルの文字列が日本語なら文字化けしていた。この点が解決しないようでは、やはりREALbasicで何か作ろうという気にはなりにくいだろう。(これに関する解決方法が分かるのであれば、ぜひとも知りたいので教えていただきたい。)

などと結論がでていながらも、プログラムをどう作るのかはチェックしたい。ここで、ExcelApplicationというクラスのインスタンスをnewで生成しているが、これにより、起動しているExcelのアプリケーションを参照できる。もし、Excelが起動していなければ、ここで起動するが、その場合はギャラリは出ないので、起動はけっこう早い。そして、ExcelApplicationのインスタンスの参照から、Excelで定義されているさまざまなメソッドがそのまま使えるということだ。ただ、ExcelのVisual Basicでは、WorksheetやRangeといったクラスが、ExcelWorksheet、ExcelRangeといった名前で管理されるようである。あらかじめDimで変数定義をしておく必要があるので、そこでREALbasic側で規定された名前を使う必要があるだろう。
新たなブックを開くには、WorkbooksにAddを利用したり、RangeメソッドやOffisetメソッド、Valueプロパティというあたりは、ExcelでのVisual Basicとほとんど同じような感覚で使える。ただ、Visual Basicでは参照を変数に記録するのにSetを使うのだが、REALbasicではSetがあるとエラーになるなど、やはり違いもある。だが、そうした細かい点を除くと、とにかくVisual Basicのリファレンスを見ながら、REALbasicでのプログラム作成はできる範囲だろう。

ちょっと期待をしていたREALbasicでのマクロ作成ではあるが、日本語の問題が解決するのを待つしかない模様だ。特に、Macintosh版のOfficeとWindows版のOfficeの大きな違いとして、データベースアクセスのことがある。Windows版だと基幹システムへの接続のような仕組みを比較的容易に組み込めるが、Mac版Excelだとそう簡単には行かなかった。だが、REALbasicは、MySQLやPostgreSQLをはじめ、OralceやSQL Server、4D、OpenBaseといった商用サーバまでプラグインが用意されているため、たとえばExcelでデータベースに接続してデータを取り出すといった仕組みがこれまでよりもぐっと作りやすくなるという利点がある。新しい機能はそう簡単には使えないと言ってしまえばそれまでだけど、この日本語の問題は、Office側の問題なのか、REALbasic側の問題なのか、外見からは判断しずらい。とにかく、良い方向に行くのを願うのみということだろうか。
それから、REALbasicのコントロールに対応するのは、Word、Excel、PowerPointであり、Entourageには対応していない。もっともEntourageはVisual Basicでのプログラミングにも対応していないので、それは仕方ないことなのかもしれないが、やはりREALbasicでの利用はViual Basicの延長であることが伺える。
関連リンク