| ▲ | Windows 95の異常人気が広がる中、不安にかられるマック・ユーザーを代表して、マックとWindowsのスクリプティング環境の比較に挑戦。 |
|
|
| ▲ | 何かと話題の「VBA」は実はオブジェクト指向で、クラスやコマンドはAppleScriptにそっくりだから、本連載の読者なら敷居はかなり低いはず。「OLEオートメーション」を使えば、ExcelからWordを自動制御することもできる。 |
連載[10-1] Visual Basicと対決〜実はそっくり!
|
《 VBA(ブイビーエー)って何なんだ?
》
|
|
|
?
|
先生っ、一体どうしたんですか、この段ボール箱の山は。こっちにあるのは「それだけは聞かんといてくれっ!」って親父が駄々こねてる例のパソコンじゃないですか。 |
|
先生
|
おーっ、君か。丁度よかった、今マシンのセッティングが終わるところなんだ。 |
|
?
|
もしかして先生、遂にマックを見放してWindowsの世界に逃げ込もうっていうんですか。 |
|
先生
|
そりゃあ全くの見当違いってもんだ。何で私が今さらWindowsに逃げ出さなくちゃいけないんだね。最近「OLE」(オーレ)やら「VBA」(ブイビーエー)なんていうのが話題になってるだろ。私も前からいろいろと評価していたんだが、ようやく研究予算がついてマシンが入ってきたところだよ。 |
|
?
|
へーぇ、先生が密かにWindowsも縄張りにしているとは知りませんでした。で、そのOLEとかVBAていうのは、一体何ですか? |
|
先生
|
じゃぁ、この駄々こね親父のマシンが立ち上がる間に簡単に説明しよう。VBAというのはね,
Visual Basic for Applications といってね、AppleScriptのWindows版みたいなもんだ。 |
|
?
|
えっ、WindowsでもAppleScriptが使えるんですかっ? |
|
先生
|
何を言ってるんだ。WindowsでAppleScriptが動くわけないじゃないか。 |
|
?
|
じゃぁ、何なんですか? |
|
先生
|
だから言ったでしょ。「みたいなもの」だって。 |
|
?
|
はぁ、モドキですね? |
|
先生
|
マック・ユーザーから見れば確かにモドキかも知れん。まぁ要するにアプリケーションをコントロールするためのスクリプト、一種のプログラミング言語なんだよ。 |
|
《 両方使えるがどっちを使う?「Excel
5.0」 》
|
|
|
?
|
で、VBAを使うとAppleScriptのようなことがWindowsでやれるんですか。 |
|
先生
|
そうだね、かなり近い線を行っているだろうね。ところで「VBA」って言葉を聞くのは初めてかい? |
|
?
|
あっ、そう言えば、「Microsoft Excel 5.0」で「Visual Basicがどうしたこうした」ってメッセージが出てくることがありますね。 |
|
先生
|
VBAはWindows版のExcel 5.0が内蔵するマクロ言語なんだが、マック版のExcel 5.0でも使えるんだよ。 |
|
?
|
えっ、本当ですか。でもAppleScriptがあるのに何でVBAを使う必要があるんですか。 |
|
先生
|
知らんよ、マイクロソフトに聞いてくれ。けどマック用のExcel 5.0はAppleScriptが使えるうえに、VBAでコントロールすることもできるんだ。 |
|
?
|
つまり、内蔵のマクロ言語としてVBAを持っている上に、AppleScriptも対応していると…う〜ん、さすがマックとWindowsをまたにかける大物ソフトですねぇ。 |
|
先生
|
Windowsとマックを両方使うユーザーにしてみれば、VBAがそのままマックで使えるのは互換性があっていいね。だが、純粋なマック・ユーザーは,AppleScriptを使うかVBAにするか、悩むだろうな。 |
|
?
|
2つもプログラミング言語を覚えるのは酷ですよ〜。 |
|
先生
|
でもまぁ、君も一生Windowsを使わないって保証はないだろうから、両者の違いや共通点を理解しておいて損はないだろう。 |
|
《
同じ作業をやらせてみると… 》
|
|
|
?
|
VBAとAppleScriptは似ているんですか。 |
|
先生
|
細かい構文とかは違うけど、考え方はすごく似ている。ではExcel 5.0で具体的に比べてみよう。例えばこんな表があったとする。VBAとAppleScriptそれぞれで、文字のフォントを変えてみようじゃないか。 |
![]() |
|
|
?
|
同じことをやる時に、両者でどう違うのか興味がありますね。 |
|
先生
|
AppleScriptだと、こんな感じになるね。 |
![]() |
|
|
?
|
これは「スクリプト編集プログラム」の画面ですね。「R1C1: R5C3」のセル範囲(Range)を選択(Select)して、選択範囲(Selection)のフォントやサイズをセットしているわけですね。 |
|
先生
|
これがVBAだと下のようになるんだ。 実行すると、両者の結果は全く同じになるんだよ。 |
![]() |
|
|
?
|
Excel 5.0のVBAを実行するのって、どうやるんですか。 |
|
先生
|
今までのマクロと同じだよ。ほら、マクロの一覧にさっき作ったVBAがあるだろ。 |
![]() |
|
|
?
|
範囲が選択されて、フォントやサイズが変わりました。AppleScriptでも同じ結果になりますね。 |
![]() |
|
|
《 VBAは昔のBasicよりAppleScriptに似ている
》
|
|
|
?
|
両方のプログラムを比較すると、「Selection」とか「Font」とか、共通の用語が多いですね。でも、構文が大分違うなぁ。 |
|
先生
|
VBAはまがりなりにもBasicだからね。変数の扱い方や値の代入の仕方なんかはAppleScriptとは全然違うよ。 if構文や繰り返し命令なんかも違う形式になるね。 |
|
?
|
でも似ている部分もありますよ。あっ、でも、オブジェクトの指定の仕方が、両者逆ですよね? |
|
先生
|
すばらしい! よく気がついた。これは重要な点だね。AppleScriptでは、
Font of Selection というように、階層が下のものから順に「of」でつないで記述していくが、VBAは、 Selection.Font という形に、上の階層から順に「.」(ピリオド)でつないで記述するんだよ。 |
|
?
|
AppleScriptは人間の言葉に近いけれど、VBAはいかにもプログラムって感じですね。 |
|
先生
|
でも基本は似ているだろう。なぜだか分かるかい? |
|
?
|
??? |
|
先生
|
今、君自身が「オブジェクト」って言葉を使ったじゃないか。 |
|
?
|
「オブジェクト」って、もしかしてVBAも「オブジェクト指向」なんですか。 |
|
先生
|
その通り。覚えているかな。AppleScriptでは、アプリケーションが扱うデータ,シートだとかフォントだとかあらゆるものが、「クラス」として定義されているだろ(図1-1)。 |
|
図1-1 AppleScriptのクラス(スクリプト編集プログラムで開いた用語説明)
|
|
|
?
|
そうです。だから細かい動作をアプリケーションに指示できるんでした。 |
|
先生
|
VBAもそうなんだよ。SheetsとかRangeはVBAのクラスなんだ(図1-2)。 |
|
図1-2 Microsoft Excel5.0のクラス VBAのクラス(オンライン・ヘルプより)
![]() |
|
|
?
|
いやぁ、意外でした。Basicって言うから昔のPC-9801のBasicを想像していたんですけど、オブジェクト指向だったとは。 |
|
先生
|
おいおい、若干30代そこそこで何億ドルの資産を作る男 (ビル・ゲイツ)をなめちゃいかんよ。Basicもガーンと進化して るんだ。 |
AppleScript救急隊事務局(ASQs) info-asqs@fsight.co.jp