|
《 AppleScriptのクラスを知っていればVBAは楽勝
》
|
|
|
」
|
そうすると、セルのフォントを変えたりケイ線を引いたり、なんてのも、それらのオブジェクトにコマンドを送る形で書くんですか。 |
|
先生
|
その通り。実はExcel 5.0のクラスはVBAもAppleScriptもかなり似ているんだよ。君も今までこれだけAppleScriptをやってきたんだから、オブジェクトとかクラスとかの考え方には十分馴染んでいるはずだ。VBAなど恐るるに足らずだ。 |
|
」
|
実はExcelがバージョン5.0になってから、今までのマクロがVBA、と言うより「分けの分からない言語」になったんで、どうしようか困っていたんですよ。けどAppleScriptに似ているんなら、取り組んでみる価値がありそうですね。 |
|
先生
|
じゃぁ、もうちょっと具体例を見せようか。今度は選択したオブジェクトの属性を変更してみよう。AppleScriptだとこうなる。 |
![]() |
|
|
」
|
いろいろな範囲(Range)を指定して、何やらイタリックとかボールドとかをセットしていますね。 |
|
先生
|
さっきの表が、こんな感じになるよ。 |
![]() |
|
| 同じことを行うVBAが以下だ。どうだい、AppleScriptと比べて? | |
|
|
|
」
|
何やら人生観の違いを感じます…。 |
|
先生
|
構文の違いさえ押さえておけば後は簡単だ。まず、頭とお尻を見ると、AppleScriptは
tell application "Microsoft Excel" ではさまれているね。AppleScriptは「スクリプト編集プログラム」を通じていろいろなアプリケーションに命令を送るわけだから、この構文が必要なわけだ。 |
|
」
|
一方のVBAは、
Sub 関数名 () ではさまれていますね。これは何なのでしょう。 |
|
先生
|
Excel流に言えば、「マクロ関数の名前」ってことかな。記述したVBAはExcelのマクロとして実行するから、関数名をつけて上のようにサンドイッチにするんだよ。 |
|
」
|
セルの指定方法が混乱するんですけど。 |
|
先生
|
VBAではセルの選択方法は
Range("A1:C9") という2種類の方法がある。前者はセルの名前による指定、後者は「上から何番目、左から何番目」という指定方法。VBAでは,Excelでの表示方式を変えれば、両方を利用できる。ところがAppleScriptは、後者しか利用できない。 |
|
《 同じオブジェクトでもやっぱり違いはある
》
|
|
|
」
|
VBAとAppleScriptのクラスや属性は、違う点もあるんでしょうか。 |
|
先生
|
細かい点でいろいろある。例えばセルにデータを入れる例を見てみよう。AppleScriptではこんな感じになる。 |
![]() |
|
|
」
|
「R4C1」のセルに「1000」という数値、「R5C1」のセルには計算式を入れているようですね。でも、値を入れる時と計算式を入れる時では、スクリプトの書き方が違いますね。 |
|
先生
|
そう。値は「Value」、計算式は「Formula」という属性をセットするんだ。だがVBAではこんな面倒はない。 |
|
」
|
どちらも、
Range(××).Formula = ○○ という形ですね。場合によったらVBAの方が簡単じゃないですか。 |
|
先生
|
そういう場合もあるね。まぁ、この程度の短いスクリプトなら大差ないと言えるかな。でもこれでVBAが簡単なんて、単純に字数で判断してないか。 |
![]() |
|
|
」
|
いえ、あ、その〜、はい。 |
|
先生
|
僕なら「森光子」より「和久井映見」の方がいいね。 |
|
」
|
何がいいんですか? |
|
先生
|
まぁ字数の問題じゃないということさ。 |
|
《 Windowsでもそのまま動くExcel5.0のVBA
》
|
|
|
」
|
もうちょっと複雑なこと、例えばグラフを描いたりもできるんですかね。 |
|
先生
|
図2を見てごらん。AppleScriptでもVBAでも同じグラフが描けるだろう。ただしAppleScriptは
Create New ChartObject Parent ActiveSheet …
ActiveSheet.ChartObjects.Add … と言った具合に、コマンドが少々違うけどね。
|
|
図2 VBAでもAppleScriptでも同じグラフが描ける
![]() |
|
|
VBA
![]() |
|
|
AppleScript
![]() |
|
|
」
|
なんかどっちもたくさん属性を指定していて、グラフを描くのは面倒そうですね。 |
|
先生
|
グラフは絵だよ。アートをプログラムするなんざそりゃ骨が折れるもんさ。つまり、正しくグラフを描かせるために設定すべき属性がたくさんあるということだね。これは避けて通れない。 |
|
」
|
でも、属性があまりに多いとVBAの方が多少は分かりやすいですね。ちゃんとカンマで区切られてますから。 |
|
先生
|
どっちが分かりやすいかは別として、VBAにはWindowsでそのまま動くっていう大きなメリットがあることを忘れちゃいけない。図3を見てごらん。Excelなら、マックもWindowsも同じVBAで全く同じグラフが描けてるだろ。 |
|
図3 同一のVBAで、マック版とWindows版のExcel 5.0でグラフを描いた
Windows
![]() |
|
|
マック
![]() |
|
AppleScript救急隊事務局(ASQs) info-asqs@fsight.co.jp