Microsoft Office

ExcelのVBAでInternet Explorerを操作する その1

ExcelのVBAを使ってInternet Explorerを操作してみたいと思います。

 

参考にさせていただいた(パクった!?)のはコチラ

 

今のところ具体的な使い道などは見えていないのですが、とりあえず技術としてということで・・・

 

大まかな流れは

 

「目的のサイトを開く」→「ページの表示が完了するまで待つ」→「表示されたらページ内のリンクを拾い出す」→「リンクを順に辿る」→「リンク先に目的のJPEGファイルが存在するか探す」→「リンクのアドレスとファイルの有無をExcelに吐き出す」といったところでしょうか。

 

まずはエクセルを立ち上げた後、VBE(Visual Basic Editor)を「Alt+F11」の同時押しで起動しましょう。(このコマンドはExcelのバージョンを問わず使えるようなので、マウスでカチカチやるより手っ取り早そうです)

 

自分の環境は未だにExcel2000を使っている状態なのでかなり古いバージョンになりますが、基本的な操作などはそう変わっていないようです。

 

もっとも使える機能などは変更されていると思いますので、まずは基本的な構文などを覚える程度にやっていきます。

 

上記の方法でVBEを起動したら

VBE

 

「VBAプロジェクト(Book1.Xls)」を右クリック→「挿入」→「標準モジュール」

 

をクリックします。

 

モジュールというのはプログラムの集まりみたいなものだと思いましょう。

このモジュール内に一連の処理を書き連ねていきます。

 

まずはインターネットエクスプローラーを起動させるところから。

 

以下のように記述していきます。

 

Sub Main()

Dim ie As Object

Set ie = CreateObject("InternetExplorer.Application")
ie.Visible = True

End Sub

 

簡単に説明すると「オブジェクトとして宣言した変数:ieに呼び出したインターネットエクスプローラーの画面を格納して、画面を表示します」てな感じ?

 

次以降で変数:ieのメソッドを呼び出して色んな動作を実行していきます。

 

ここまで入力したらF5キーを押してみましょう。(F5で作成したプロシージャを実行できます)

 

画面が空白のIE(Internet Explorer)が起動すれば成功、エラーが出たら入力間違いの可能性大なのでもう一度見直してみましょう。

 

空白で開いてもどうしようもないので、まずはURLを指定して該当するサイトを開くようにしてみましょう。

 

この動作は「Navigateメソッド」を呼び出すことで可能になります。

 

上で作成したプロシージャの「End Sub」の上の行に

 

ie.Navigate "http://www.forest.impress.co.jp/article/2013/05/excelvba/"

 

と追記してF5を押してみましょう。

 

空白ではなくきちんと表示されたらOKです。

 

単にIEを起動して目的のサイトを表示させるだけならたったこれだけのプログラムで済んでしまいます。なんだか簡単そうですね~。

 

続いてはIEの表示が完了するまで次の処理を行わないよう状態のチェックを行うプロシージャを追加しましょう。

 

実際に使用しているときにも、画面をクリックしてからページがきちんと表示されるには多少の時間が掛かりますよね?

 

同じように、表示が完了する前に次の動作を要求するとExcelがエラーを吐いてしまいます。

 

Mainプロシージャの「End Sub」の下に以下のプロシージャを追加しましょう。

 

Sub waitNavigation(ie As Object)

Do While ie.Busy Or ie.ReadyState < 4
DoEvents
Loop

End Sub

 

一行目の()の中身は引数ってヤツで、外部から渡される値を使ってプロシージャを実行するよ~みたいな感じです。

 

で、このwaitNavigationをMainプロシージャから呼び出すように、Main~の「End Sub」の上に追記します。

 

waitNavigation ie

 

これで「ie」を引数としてwaitNavigationプロシージャを呼び出すことができます。

 

今のところ、VAEのウィンドウには以下のとおりに記載されているかと思います。

Main2

 

長くなってきたので今回はここまでで。

 

Excel VBAでIEを思いのままに操作できるプログラミング術 Excel 2013/2010/2007/2003対応

オススメの記事

-Microsoft Office
-