Mutable_Yunの業務改善ブログ

VBA勉強中の非エンジニア会社員向けのブログです。業務改善についても触れています。

VBA OLEオートメーションで別のアプリケーションを動かす③ 今こそ身に付けておくべき、OLEを使うのに必要な調べる力

OLEオートメーションの難しさは調べることの難しさでした。プログラムの流れ自体は明快で分かりやすいものでした。今回はOLEオートメーションのクラス名、メソッド、プロパティの調べ方について解説します。

この記事は二段です。
レベルについてはExcel VBAの実力(レベル)を定義してみる 初心者~三段をご参照ください。

目次

OLEを使うにはクラス名を調べる

VBAでは既定のクラスについてはクラス名とオブジェクト名が同じです。オブジェクトをやりとりする、とありますが、既定バインディングでは自分でインスタンスを生成しますし、実行時バインディングではクラス名の取得と同時にオブジェクトを生成するCreateObject関数を使います。

※このブログの読者は絶対誰も落ちこぼれにしない方針です。ここまでの説明で「ほへ??」って、なっている人は、クラスの使い方について復習しましょう!(リンク貼ります)

そのオブジェクト名と同じ名前のクラス名をまず調べてから、そのメンバー(メソッドとプロパティのこと)を調べます。

最も大事な公式サイト

OLEを利用するに当たり、最も大切な公式ドキュメントを紹介します。Office ディベロッパーセンターにあります。

Office VBA リファレンス

最も大事な公式ドキュメントは、Office VBA リファレンスです。今までVBAと言ってきたのはエクセルVBAのことです。本当は、VBAはOutlook VBAや、Word VBAもあります。それらのクラスをExcelから使いたいので、Officeの製品群の、全てのVBAのクラスが載っている場所を知っていることは重要です。リンクは下記です。

Ctrl + クリックで別ウィンドウで開くことができます。
docs.microsoft.com

このリンク先を開くと下の様な画面が出ます。

公式ドキュメント~Office VBA リファレンス~
公式ドキュメント~Office VBA リファレンス~

左端に様々なOfficeのアプリケーション名があります。この中から自分が操作したいオブジェクト名(=クラス名)を探します。

例として、今回はOutlookでメールを送信したいときのオブジェクトを探してみましょう。Outlookを選択するとプルダウンリストが展開されるので「オブジェクト モデル」を選択します。

Office VBAリファレンスから調べたいアプリケーションのオブジェクトを選択する
Office VBAリファレンスから調べたいアプリケーションのオブジェクトを選択する

すると、アルファベット順にオブジェクト名が出てきます。今回はメールを送りたいので、ソレっぽい名前で検索します。「mail」がつくオブジェクトを調べてみると、2つ出てきました。

mailがつくオブジェクトは2つあった
mailがつくオブジェクトは2つあった

メールそのもののオブジェクトを調べたいので、上の方のMailItemオブジェクトの方がソレっぽいです。展開してみると、いかにもメールが持つ機能といったメソッドがたくさん出てきました。

MailItemオブジェクトのメソッドを展開したところ
MailItemオブジェクトのメソッドを展開したところ

無事に調べることができました。