title1
navigation bar3



[ 1 | 2 | 3 |4 |5 | 6 | 7 | 8 | 9 | 10-p1 | 10-p2 | 10-p3 | 11 | 12 ] [日経マック連載Index ]

  Windows 95の異常人気が広がる中、不安にかられるマック・ユーザーを代表して、マックとWindowsのスクリプティング環境の比較に挑戦。

  何かと話題の「VBA」は実はオブジェクト指向で、クラスやコマンドはAppleScriptにそっくりだから、本連載の読者なら敷居はかなり低いはず。「OLEオートメーション」を使えば、ExcelからWordを自動制御することもできる。



連載[10-1] Visual Basicと対決〜実はそっくり!


VBA(ブイビーエー)って何なんだ?
両方使えるがどっちを使う?「Excel 5.0」
同じ作業をやらせてみると…
VBAは昔のBasicよりAppleScriptに似ている
AppleScriptのクラスを知っていればVBAは楽勝
同じオブジェクトでもやっぱり違いはある
Windowsでもそのまま動くExcel5.0のVBA
VBAとAppleScriptの同時レコーディングが可能
VBAでほかのアプリケーションに命令できる?
MS-Wordの「Word Basic」オブジェクトに命令


《 VBA(ブイビーエー)って何なんだ? 》
先生っ、一体どうしたんですか、この段ボール箱の山は。こっちにあるのは「それだけは聞かんといてくれっ!」って親父が駄々こねてる例のパソコンじゃないですか。
先生
おーっ、君か。丁度よかった、今マシンのセッティングが終わるところなんだ。
もしかして先生、遂にマックを見放してWindowsの世界に逃げ込もうっていうんですか。
先生
そりゃあ全くの見当違いってもんだ。何で私が今さらWindowsに逃げ出さなくちゃいけないんだね。最近「OLE」(オーレ)やら「VBA」(ブイビーエー)なんていうのが話題になってるだろ。私も前からいろいろと評価していたんだが、ようやく研究予算がついてマシンが入ってきたところだよ。
へーぇ、先生が密かにWindowsも縄張りにしているとは知りませんでした。で、そのOLEとかVBAていうのは、一体何ですか?
先生
じゃぁ、この駄々こね親父のマシンが立ち上がる間に簡単に説明しよう。VBAというのはね,

  Visual Basic for Applications

といってね、AppleScriptのWindows版みたいなもんだ。

えっ、WindowsでもAppleScriptが使えるんですかっ?
先生
何を言ってるんだ。WindowsでAppleScriptが動くわけないじゃないか。
じゃぁ、何なんですか?
先生
だから言ったでしょ。「みたいなもの」だって。
はぁ、モドキですね?
先生
マック・ユーザーから見れば確かにモドキかも知れん。まぁ要するにアプリケーションをコントロールするためのスクリプト、一種のプログラミング言語なんだよ。
TOP

《 両方使えるがどっちを使う?「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を使わないって保証はないだろうから、両者の違いや共通点を理解しておいて損はないだろう。
TOP

《 同じ作業をやらせてみると… 》
VBAとAppleScriptは似ているんですか。
先生
細かい構文とかは違うけど、考え方はすごく似ている。ではExcel 5.0で具体的に比べてみよう。例えばこんな表があったとする。VBAとAppleScriptそれぞれで、文字のフォントを変えてみようじゃないか。
TestDocument
同じことをやる時に、両者でどう違うのか興味がありますね。
先生
AppleScriptだと、こんな感じになるね。
AppleScriptでの例
これは「スクリプト編集プログラム」の画面ですね。「R1C1: R5C3」のセル範囲(Range)を選択(Select)して、選択範囲(Selection)のフォントやサイズをセットしているわけですね。
先生
これがVBAだと下のようになるんだ。
実行すると、両者の結果は全く同じになるんだよ。
VBAでの例
Excel 5.0のVBAを実行するのって、どうやるんですか。
先生
今までのマクロと同じだよ。ほら、マクロの一覧にさっき作ったVBAがあるだろ。
マクロの一覧
範囲が選択されて、フォントやサイズが変わりました。AppleScriptでも同じ結果になりますね。
AppleScriptでの結果
TOP

《 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のクラス(スクリプト編集プログラムで開いた用語説明)
AppleScriptのクラス(スクリプト編集プログラムで開いた用語説明)
そうです。だから細かい動作をアプリケーションに指示できるんでした。
先生
VBAもそうなんだよ。SheetsとかRangeはVBAのクラスなんだ(図1-2)。
図1-2 Microsoft Excel5.0のクラス VBAのクラス(オンライン・ヘルプより)

図1-2MicrosoftExcel5.0のクラス-VBAのクラス(オンライン・ヘルプより)
いやぁ、意外でした。Basicって言うから昔のPC-9801のBasicを想像していたんですけど、オブジェクト指向だったとは。
先生
おいおい、若干30代そこそこで何億ドルの資産を作る男 (ビル・ゲイツ)をなめちゃいかんよ。Basicもガーンと進化して るんだ。

TOP

AppleScript救急隊事務局(ASQs) info-asqs@fsight.co.jp

主催 株式会社フォーサイト   後援 アップルコンピュータ株式会社

(c)1996-2010 The ForeSight Inc. All rights reserved.Appleは、米国アップルコンピュータ社の登録商標です。
AppleScriptは、米国アップルコンピュータ社の商標です。
その他記載の会社名・製品名・ソフトウェア名は一般にその会社の登録商標または商標です。