title1
navigation bar3



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



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


《 AppleScriptのクラスを知っていればVBAは楽勝 》
?
そうすると、セルのフォントを変えたりケイ線を引いたり、なんてのも、それらのオブジェクトにコマンドを送る形で書くんですか。
先生
その通り。実はExcel 5.0のクラスはVBAもAppleScriptもかなり似ているんだよ。君も今までこれだけAppleScriptをやってきたんだから、オブジェクトとかクラスとかの考え方には十分馴染んでいるはずだ。VBAなど恐るるに足らずだ。
?
実はExcelがバージョン5.0になってから、今までのマクロがVBA、と言うより「分けの分からない言語」になったんで、どうしようか困っていたんですよ。けどAppleScriptに似ているんなら、取り組んでみる価値がありそうですね。
先生
じゃぁ、もうちょっと具体例を見せようか。今度は選択したオブジェクトの属性を変更してみよう。AppleScriptだとこうなる。
AppleScriptで選択したオブジェクトの属性を変更する
?
いろいろな範囲(Range)を指定して、何やらイタリックとかボールドとかをセットしていますね。
先生
さっきの表が、こんな感じになるよ。
 
イタリックやボールドの属性を指定した表
  同じことを行うVBAが以下だ。どうだい、AppleScriptと比べて?
VBAで属性を変更するスクリプト
?
何やら人生観の違いを感じます…。
先生
構文の違いさえ押さえておけば後は簡単だ。まず、頭とお尻を見ると、AppleScriptは

  tell application "Microsoft Excel"
  end tell

ではさまれているね。AppleScriptは「スクリプト編集プログラム」を通じていろいろなアプリケーションに命令を送るわけだから、この構文が必要なわけだ。

?
一方のVBAは、

  Sub 関数名 ()
  End Sub

ではさまれていますね。これは何なのでしょう。

先生
Excel流に言えば、「マクロ関数の名前」ってことかな。記述したVBAはExcelのマクロとして実行するから、関数名をつけて上のようにサンドイッチにするんだよ。
?
セルの指定方法が混乱するんですけど。
先生
VBAではセルの選択方法は

  Range("A1:C9")
  Range("R1C1:R9C3")

という2種類の方法がある。前者はセルの名前による指定、後者は「上から何番目、左から何番目」という指定方法。VBAでは,Excelでの表示方式を変えれば、両方を利用できる。ところがAppleScriptは、後者しか利用できない。

TOP

《 同じオブジェクトでもやっぱり違いはある 》
?
VBAとAppleScriptのクラスや属性は、違う点もあるんでしょうか。
先生
細かい点でいろいろある。例えばセルにデータを入れる例を見てみよう。AppleScriptではこんな感じになる。
AppleScriptの例
?
「R4C1」のセルに「1000」という数値、「R5C1」のセルには計算式を入れているようですね。でも、値を入れる時と計算式を入れる時では、スクリプトの書き方が違いますね。
先生
そう。値は「Value」、計算式は「Formula」という属性をセットするんだ。だがVBAではこんな面倒はない。
?
どちらも、

  Range(××).Formula = ○○

という形ですね。場合によったらVBAの方が簡単じゃないですか。

先生
そういう場合もあるね。まぁ、この程度の短いスクリプトなら大差ないと言えるかな。でもこれでVBAが簡単なんて、単純に字数で判断してないか。
VBAの例
?
いえ、あ、その〜、はい。
先生
僕なら「森光子」より「和久井映見」の方がいいね。
?
何がいいんですか?
先生
まぁ字数の問題じゃないということさ。
TOP

《 Windowsでもそのまま動くExcel5.0のVBA 》
?
もうちょっと複雑なこと、例えばグラフを描いたりもできるんですかね。
先生
図2を見てごらん。AppleScriptでもVBAでも同じグラフが描けるだろう。ただしAppleScriptは

  Create New ChartObject Parent ActiveSheet …

VBAは

  ActiveSheet.ChartObjects.Add …

と言った具合に、コマンドが少々違うけどね。

図2 VBAでもAppleScriptでも同じグラフが描ける
VBAでもAppleScriptでも同じグラフが描ける
VBA
VBA
AppleScript
AppleScript
?
なんかどっちもたくさん属性を指定していて、グラフを描くのは面倒そうですね。
先生
グラフは絵だよ。アートをプログラムするなんざそりゃ骨が折れるもんさ。つまり、正しくグラフを描かせるために設定すべき属性がたくさんあるということだね。これは避けて通れない。
?
でも、属性があまりに多いとVBAの方が多少は分かりやすいですね。ちゃんとカンマで区切られてますから。
先生
どっちが分かりやすいかは別として、VBAにはWindowsでそのまま動くっていう大きなメリットがあることを忘れちゃいけない。図3を見てごらん。Excelなら、マックもWindowsも同じVBAで全く同じグラフが描けてるだろ。
図3 同一のVBAで、マック版とWindows版のExcel 5.0でグラフを描いた Windows
Windows
マック
マック

TOP

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

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

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