object とはなんなんでしょうか?
VBA の参考書によく出てくる、オブジェクトという言葉の意味がわからない。そういった質問をいただきました。ここでは、番外編として、「オブジェクト」が何なのか、それが VBA で、どう役立っているのかを、いっしょに考えましょう。この考え方は XP になっても 、おそらく .NET でも、通用するものなので、「 Excel 97 なんて古い」と言わないでください。
object を辞書で引くと、「もの」とあります。 VBA で出てくる object とは、「もの」です。哲学っぽくなってもいけませんから、たとえ話をしましょう。最初に用意するものは、林檎ジュースと林檎です。
林檎ジュースは、大昔の Excel マクロです。ジュースは飲みやすいけれども、容器に入れないと持ち運べない、運搬中にこぼれやすい、といった欠点があります。また、蜜柑ジュースを同じ容器に入れれば、完全に混ざってしまいます。
やがて object という概念が発明されて、Excel の VBA も object を中心にして動くようになりました。これは、ジュースでなく、果物の林檎になったということです。果物の利点は、「もの」なので、こぼれたり混ざったりしないことです。蜜柑 3 個に林檎 5 個を一つの箱に入れておいても、混ざって変な味になることも、数が変わることもありません。保管や運搬が画期的に楽になりました。
VBA のようなマクロプログラムも、黎明期には、液体ジュースのように混沌としていました。手軽な代わりに、寿命が短いということです。プログラムを「林檎」のようにイメージしやすい「もの」の単位で扱えるようになってから、林檎ジュースと蜜柑ジュースが混ざらないように目配りする必要がなくなりました。しかも、一つ一つの林檎を区別してあつかうのも、林檎 5 個全部を取り出すのも容易です。
VBA には様々な object が出てきます。object とは一つ一つの「もの」を指しますから、上の話では 5 つの林檎 object と 3 つの蜜柑 object があり、合計 8 個の「もの」それぞれに対して取り扱いを書いていくことで VBA のプログラムが成り立っているということになります。
それでは 6 番目の林檎を用意しましょう。極上の味の林檎がいいですね。
Set 第六の林檎 = CreateObject("林檎")
第六の林檎. 味 = "極上"
新しい林檎 object を作り、「味」を設定しました。実際の VBA プログラムでは、これが Worksheet Object になったり Font Object になったりするだけです。それでは、いただきましょうか。
第六の林檎. 皮をむく
第六の林檎. 食べる
昔のマクロはミックスジュースなので、一度ブレンドすれば、もうそれっきりでした。今の VBA では、果物の盛り合わせ状態で、さまざまな object が別々に利用できます。 Office というアプリケーションは object の塊だと言っていいでしょう。そのため、 VBA のプログラムでは、 object を理解し、使いこなすことが大切なのです。
最後に、たとえ話に登場した「もの」を使って、いくつかの言葉を整理しておきます。林檎とか蜜柑とかいう果物の種類は class という言葉で表現されます。これは抽象概念です。この、林檎 class が、目に見えて数えられる林檎になった時点で、 object と呼ばれるようになります。 object としての林檎は、おのおのに名前がついていて区別されます。 6 個の林檎をまとめて、林檎 collection と言います。