COMオブジェクトからInternet Explorerを操作したい

COMオブジェクトからInternet Explorerを操作したい
Intetnet Explorer(以下、IE)を起動する方法はいくつかありますが、
その中でも一番早く、確実なのがCOMオブジェクトを操作することです。

しかし、COMオブジェクトは使い方が少し難しいので
初めての方には
とっつきにくい所でもあります。

まずは習うより慣れよ。
簡単な手順を通して
見ていきましょう。

今回はIEを立ち上げて、あるWebサイトにアクセス、
その後、ページ内にあるHTMLテキストを
全部取ってきて、メモ帳に貼り付ける。
というスクリプトを作ってみます。

まずは、IEを立ち上げるところを
コーディングします。

IE = CREATEOLEOBJ("InternetExplorer.Application")
IE.visible = True

これで、IEが立ち上がり
何もないページがウィンドウに表示されるはずです。
この中が何をやっているか、
最初のうちは分からないでもOKです。
IEを操作するオブジェクトを変数”IE”に入れ、
その”IE”に対して、まずは画面上に現れなさい(visible = True)と
命令していると思えば大丈夫です。

次にあるページ(今回はGoogle)に
アクセスさせましょう。

IE = CREATEOLEOBJ("InternetExplorer.Application")
IE.visible = True
IE.navigate("http://www.google.co.jp/")
REPEAT
 SLEEP(0.1)
UNTIL !IE.busy AND IE.readystate = 4

REPEAT-UNTILによる繰り返し制御が行われております。
何を繰り返しているかと言うと
SLEEP(0.1)
つまりある条件になるまでは
ずっと「0.1秒待つ」という行為を繰り返すのです。

ある条件とは
!IE.busy AND IE.readystate = 4
です。
あるWebページにアクセスすると
必ずアクセスして情報取得するまでに数秒程の待ち時間が発生します。
この時間を考慮しないで、次の処理をどんどん書いてしまうと、
必要な情報が読み込まれていないので
エラーになってしまいます。

IE.busyでIEが他の処理を実行しているか、していないか、状態を返してくれます。

いわゆる、ビジー状態かそうでないかを判別してくれるのです。
IE.busyはビジー状態ならばTrue、そうでないならばFalseを返します。
ビジー状態でなければ次の処理に行っても問題ないので、頭に「!」をつけて
「ビジー状態でなければ」という条件を表現します。
頭につく「!」は「否定」を表します。
ビジー状態でない⇒Falseが返ってくる⇒頭に「!」⇒FalseがTrueに変換される
結果、REPEAT-UNTILの条件判定箇所でTrueが返って来るのです。

同様に
IE.readystate = 4
という条件も見ています。
readystateとは「今、どういう状態か」を数字で返してくれます。
4は完了を意味します。
0~3も意味がありますが参考程度ですので、下に記します。
readystate = 0 (未開始)
readystate = 1 (読み込み開始)
readystate = 2 (読み込み中)
readystate = 3 (読み込み中で操作も可能)

読み込みが完了すれば、アクセスしたページのデータは
操作できますので、そのままメモ帳に貼り付けましょう。

IE = CREATEOLEOBJ("InternetExplorer.Application")
IE.visible = True
IE.navigate("http://www.google.co.jp/");
REPEAT
 SLEEP(0.1)
UNTIL !IE.busy AND IE.readystate = 4
SENDSTR(EXEC("notepad"),IE.document.body.innerTEXT)

最後にメモ帳を起動し、
IE.document.body.innerTEXT
で、Webページ中の全テキストを取得して、送信しています。

それでは少し応用して、
ある3サイトにアクセスして、
各ページのテキストをそれぞれメモ帳に
貼り付けるスクリプトを作ってみましょう。

スクリプトはこのようになります。


続きは、ログインもしくは、登録してください



このページの先頭へ