OLEオートメーションを使ってエクセル以外のアプリケーションを動かす方法を学ぶシリーズの1回目です。以降、単にOLEと呼びます。プログラミングを学習には、まず手を動かすことが大事です。しかし、オブジェクト指向、OLE、APIの3つに関しては、まずは概念を学ぶのが結果的に早いと感じています。今回はOLEオートメーションを確実に身に付けるための第一歩、OLEとは何なのかついて解説していきます。
この記事は二段です。クラスやオブジェクトの概念が理解出来ていることを前提に解説を進めていきます。
レベルについてはExcel VBAの実力(レベル)を定義してみる 初心者~三段をご参照ください。
目次
OLEとは
OLEは Object Linking and Embeddingの略です。OLEはWindowsの他のアプリケーションを動かすための規格(または技術、やり方、方法。)です。それではその概念について学んでいきましょう。
OLEの目的
OLEの目的は、簡単に言えば「エクセルVBAでメールを送る機能を実現したい」という思いを実現する為の規格(または技術、やり方、方法。)です。
当たり前ですが、エクセルはエクセルアプリケーションの持っているオブジェクトしか操作できません。つまり、エクセルVBAで操作できるオブジェクトはエクセルアプリケーションが持っているオブジェクト(例えばSheets)とVBAで定義したクラスから生成したインスタンスのみです。
Outlookが持っているオブジェクトは操作できません。Outlookが持っているオブジェクトの一つがメールですね。MailItemオブジェクトと言います。このMailItemオブジェクトのようなWindowsの別のアプリケーションが持っているオブジェクトを操作できるようにする事がOLEの目的です。
OLEの概念
ちょっとだけオブジェクト指向を復習
二段の皆さんは身に付けているオブジェクト指向を意識しましょう。クラスモジュールでクラスを自分で定義する理由は機能とデータを持ったオブジェクトを設計するためでした。標準モジュールを利用する目的は、オブジェクトの機能を呼び出すことでしたね。処理内容(=機能)を記述するクラスモジュールと処理の流れをコントロールする標準モジュールに分けるのがオブジェクト指向でした。
OLEの概念はオブジェクト指向そのもの
前述の「エクセルVBAでメールを送る機能を実現したい」を実現するためにはOutlookが持っているクラスからエクセルVBAの標準モジュールでインスタンスを生成する必要があります。
OLEが他のWindowsのアプリケーションを操作したいと言う事は、言い換えれば他のアプリケーションのクラスを使う、と言う事です。
クラスモジュールでは自分独自のクラスを使っていました。今回は自分でクラスモジュールでクラスを記述するのでは無く、他のアプリケーションが用意したクラスを拝借します。必要なメソッドやプロパティは既にそのクラスの中に入っているために、エクセルVBAの標準モジュールはインスタンスを生成するだけで、その機能(メソッド)やデータ(プロパティ)を利用することができます。
次回の記事に進む前に
次回の記事では、実際にOLEを使って他のアプリケーションを操作する為の記述の仕方を勉強します。オブジェクト指向が良く理解出来ていない人は、次に進む前にオブジェクト指向について復習しておきましょう。
よく分からないまま前に進むと、コピペ人間で終わってしまう可能性があります。オブジェクト指向が分かっていれば、要するにOLEとはクラスを自分で作るのでは無く、他のアプリケーションから借りてくるだけだ、という事が分かるので、すんなりマスターすることができます。
オブジェクト指向に不安がある方は下記で予め復習しておきましょう。この3つを読めば、オブジェクト指向の概要は完全に理解出来ます。
- VBAのクラスを使う① クラスを使うためのオブジェクトとメソッドの前提知識
- VBA クラスモジュールの使い方を超簡単に日本語のクラス名で具体的に解説する① A1セルの値をメッセージボックスに表示させるだけのクラスをつくる
- VBA クラスモジュールの使い方を超簡単に日本語のクラス名で具体的に解説する② Propertyプロシジャを作る
②ではInternet Explorerでウェブサイトを表示させる例でOLEの具体的な書き方を学んでいきます
<関連記事>
- VBA OLE① OLEの目的と概念
- VBA OLE② コードの作り方 Internet Explorerの例
- VBA OLE③ 調べる力
- VBA OLEを使ってメールを配信する
- VBA 二段から三段へ~OLEオートメーションを確実に身に付ける勉強方法 3つの手順~
- VBA 三段から四段へのステップアップ ~APIを身に付ける~
<お知らせ>
Excel VBAでクラスやオブジェクトの概念と使い方を丁寧に解説し、ワンランク上の実力を目指すガイドを書きました。この本で本物の実力を身に付けて一皮むけてみませんか?
books.rakuten.co.jp