ついて情報発信しています。VBAプログラムは本当初心者から他のアプリケーションを呼び出して使う上級者的な使い方まで幅広いレベルで解説していきます。Explorerの例VBAの勉強このブログの記事一覧にもどるTweetOLEの概念が分かったところで、実際にOLEでエクセル以外のアプリケーションを動かすプログラムを作っていきましょう。初心者~三段をご参照ください。この記事はオブジェクト指向の概念とOLEの概念を理解していることを前提に話を進めます。事前バインディングと実行時バインディングバインディングとは事前にオブジェクトを参照する事前バインディングと参照と同時にインスタンスを生成する実行時のバインディング事前バインディング実行時バインディングでOLEを利用する普通にクラスを作るときと違って、一旦Object型で変数を宣言する事前にオブジェクトを参照しないので、自分でインスタンスを生成するなんとか、IEのメソッドを調べる事前バインディングと実行時バインディングOLEで他のアプリケーションを動かす為には、バインディングという作業が必要です。このバインディングという作業について解説します。バインディングとはクラスとはオブジェクトを定義する為の仕様書とか設計図のようなものでした。そのままでは使えないので標準モジュールで、インスタンスを生成してから使っていましたよね。新しいクラスってやっても、エクセルさんからしたら「誰ソレ?」状態になります。Sub実行して出たエラーがメッセージが下記のものです。「ユーザー定義型は定義されていません」っていうのは、エクセルさんが知らない型で変数が宣言されていたので、クラスモジュールで型が定義されているかと思ったら、それも定義されていませんでした、と言う事です。そんなクラスありませんって事です。今回はエクセルアプリケーション以外のクラスを使うので、いきなりインスタンスを生成しようとしても同じ事が起きます。そこで、他のアプリケーションのクラスをエクセルさんに教えてあげる作業が必要となります。これが、バインディングという作業です。インターネットで検索して出てくる「オブジェクトの参照」というのは、この「他のアプリケーションのクラスをエクセルさんに見せてあげる事」です。ん?「オブジェクトの参照??」と思った人は鋭いです。実は事前バインディングと実行時バインディングは、意味が違います。事前にオブジェクトを参照する事前バインディングと参照と同時にインスタンスを生成する実行時のバインディング事前バインディング予めエクセルさんにオブジェクトを参照してもらう方法です。新しいクラスと書いただけで、「新しいクラス」型の「新しいオブジェクト」が使えます。事前バインディングは予め参照させるので、エクセルアプリケーションの設定が必要です。作ったプログラムって大抵、配布しますよね。配布するのはエクセルアプリケーションでは無く、エクセルのマクロブックです。言う事はユーザーが自分でエクセルの設定を変更しなくてはなりません。これは、配布するプログラムとしては失格ですね。以下で、実行時バインディングを解説します。★事前バインディングはエクセルさんがクラスを知っているので、そのメンバー(メソッドとプロパティ)の入力補助が出るので便利です。事前バインディングでコーディングして、配布前に実行時バインディングを使うのもアリだと思います実行時バインディングでOLEを利用するそれでは、実行時バインディングでOLEを使うプログラムを作っていきましょう。Explorerのクラスをお借りして、オブジェクトを生成し、利用します。普通にクラスを作るときと違って、一旦Object型で変数を宣言する自分でクラスモジュールでクラスを作るときは、そのクラス名がオブジェクトの型名になるんでしたよね。今回は、自分でクラスを作るわけではないので、一旦、Object型で変数を宣言します。Subネットとか文献の解説だと変数名が「IE」になっていると思います。この変数名じゃないと行けないのかと勘違いしてしまうかもしれないので、日本語にしました。自分でコーディングする場合は、書きやすいように変数名は「IE」などとして下さいね。記事内のサンプルはわかりやすさ重視で日本語にしているだけです。事前にオブジェクトを参照しないので、自分でインスタンスを生成する実行時バインディングではオブジェクトの参照をしていません。するかというと、インスタンスを生成すると同時にクラスを参照するCreateObject関数を使います。引数に参照したいクラスのアプリ名を取って、その引数名のオブジェクトを戻します。Sub「インターネットエクスプローラー」と言うObject型の変数を宣言してから、その変数にCreateObject関数に「InternetExplorer.Application」を渡した戻り値を格納しています。これで、「インターネットエクスプローラー」をInternetExplorer.Applicationとして使う事ができるようになりました!!なんとか、IEのメソッドを調べる自分で作ったクラスではないのでメソッド名が全然分かりません。自分で調べるしかないです。二段以上は、メソッド名やプロパティ名を公式ドキュメントで調べる力がコーディングの実力に影響してきます。Explorerの公式ドキュメントを見つけることができました。ここからが大変なのですが、なんとかインターネットエクスプローラーというブラウザを開くメソッドを調べてたどり着こうとします。methodにたどり着きました。画面の上の方に「もう定期更新はしません」って書いてあるのが気になりますね。Edgeをすいしょうしているからなんでしょうけど、OLEの説明なので、もうこのまま解説続けちゃいます。プログラムの構文、書き方のこと)に「object.navigate(url);」と書いてあります。セミコロンがついているのはC++という別のプログラミング言語でこのメソッドを書く時の例なので無視します。Subふう、やっとできました。Trueを挿入しています。これはブラウザを表示させています。これで、このブログのまとめページを開くプログラムが完成しました。OLEを利用した具体的な手順はわかりましたか?コード自体はオブジェクト指向とOLEの概念が分かっていれば難しくありませんね。大変なのは、メソッド名やプロパティ名を調べるところです。調べる方法については、次回解説します。今こそ身に付けておくべき、OLEを使...OLEオートメーションの難しさは調べることの難しさでした。日)1985年生まれの会社員。業務改善部隊に異動で芽を出し、現在に至る。本業での知識と経験を元に、ブログとTwitterで1生産性向上2業務改善3自動化について情報発信しています。【プログラミング】文法の勉強だけでは遠回り|挫折しない上達のコツ月別アーカイブはてなブログをはじめよう!mutable_yunさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。