Quantcast
Channel: いつも隣にITのお仕事
Viewing all articles
Browse latest Browse all 2088

エクセルVBAでIEを操作するもっとも簡単なクラスを作成する方法

$
0
0
scraping

photo credit: BONGURI 20181013 Denpark 8 via photopin (license)

みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。

エクセルVBAでInternetExplorerを操作してWebスクレイピング!

IEはMicrosoftさんも使用してくれるなとお達しがありましたが、環境によってはしばらく頑張っていただく必要がありますかね。

それで、実際に使用するときにはIEオブジェクトを生成したり、指定のURLにアクセスしたり、Documentオブジェクトを取得したり、読み込み待ちをしたり…

けっこういつも同じことをしているんですよね。

そんなときには、部品化ですよ、部品化!

そして、部品化をするなら、クラスですよ、クラス!

ということで、今回からシリーズで、エクセルVBAでIEを使ったスクレイピングをするときに便利なクラスの作り方をお伝えしていきます。

なお、IEの基本操作については以下の記事からはじまるシリーズに詳しく書いていますので、そちらも参考にしてくださいね。

【エクセルVBAでIE操作】10分で終わるセッティングとWEBページの閲覧確認
エクセルVBAでInternetExplorerを操作するシリーズの導入編です。今回はIEを操作するときに最初にすべきセッティングと実際にWEBページを開く動作確認までをやってみたいと思います。

まず今回は、エクセルVBAでIEを操作するもっとも簡単なクラスを作成する方法をお伝えします。

では、行ってみましょう!

IEによるスクレイピングの準備

IEによるスクレイピングをする準備を進めていきましょう。

  • InternetExplorerの操作をするには「Microsoft Internet Controls」
  • HTMLの操作をするには「Microsoft HTML Object Library」

というそれぞれのライブラリを参照設定しておく必要があります。

以下の記事にこれらのライブラリの参照設定について詳しく書いておりますので、忘れずにやっておきましょうね。

【エクセルVBAでIE操作】10分で終わるセッティングとWEBページの閲覧確認
エクセルVBAでInternetExplorerを操作するシリーズの導入編です。今回はIEを操作するときに最初にすべきセッティングと実際にWEBページを開く動作確認までをやってみたいと思います。

IEを操作するクラスを作る

では、さっそくIEを操作するクラスを作成していきましょう。

クラスを作成する手順は以下の記事で詳しく紹介していますので、わからない方は参考にしながら進めてみてください。

【初心者でもできる】エクセルVBAで最も簡単なクラスを作る方法
「初心者でもわかる!エクセルVBAのクラスモジュールの活用法」をテーマに、その使い方と便利さについてシリーズでお伝えしていきます。今回は、エクセルVBAで最も簡単なクラスを作る方法をお伝えしていきます。

さて、まずVBEの「挿入」メニューの「クラスモジュール」からクラスモジュールを挿入します。

クラスモジュールの挿入

次に、挿入したクラスモジュールについて、プロパティウィンドウのオブジェクト名を「IEObject」としましょう。

これがクラス名になります。

クラスモジュールの名前を変更

これで、クラス完成っす(空っぽですが)!

以下のようなプロシージャを実行すると…

Sub MySub()
    
    Dim ieObj As IEObject: Set ieObj = New IEObject
     
    Stop
     
End Sub

ほら、Stop時にローカルウィンドウを見ると、ちゃんとIEObjectのインスタンスが生成できたことが確認できますよね。

クラスIEObjectの生成をローカルウィンドウで確認

InternetExplorer型のプロパティを定義する

さて、そんなIEObjectクラス。

中身は空っぽです。メンバーとして何を持っておくべきでしょうか?

大前提として、InternetExplorerを操作できる必要がありますよね。

そいういうのは、ひとまずパブリック変数として宣言しておいて、プロパティとして持っておけばOKっす。

そうすれば、IEObjectクラスはその機能を内包できるようになります。

Public IE As InternetExplorer

IEObjectクラスでIEを表示する

そして、クラスモジュールで宣言したパブリック変数は、インスタンスを生成した際にはプロパティとして使用できます。

つまりIEプロパティを経由して、IEの操作ができるはず…

では、まずはIEを表示してみましょう。

標準モジュールで以下プロシージャを作って実行してみます。

Sub MySub()
    
    Dim ieObj As IEObject: Set ieObj = New IEObject
    ieObj.IE.Visible = True
    
    Stop
     
End Sub

VisibleプロパティはTrueにすれば、InternetExplorerオブジェクトを表示しますね。

実行すると、以下のように空っぽですがIEが表示されます。

VBAでIEを表示する

IEObjectクラスでIEを閉じる

では、次にIEObjectのIEプロパティを経由して、IEを閉じてみましょう。

IEを閉じるには、Quitメソッドでしたね。

以下プロシージャを実行すると、Stopから再開したときにIEが閉じることが確認できますね。

Sub MySub()
    
    Dim ieObj As IEObject: Set ieObj = New IEObject
    ieObj.IE.Visible = True
    
    Stop

    ieObj.IE.Quit
     
End Sub

まとめ

以上、エクセルVBAでIEを操作するもっとも簡単なクラスを作成する方法をお伝えしました。

IEの操作方法とクラスの使い方がそれぞれなんとなくわかっていれば、たぶん大丈夫。

もしわからない方は、記事内で紹介した記事で復習していきましょう。

次回は、コンストラクタとデストラクタを作成していきます。

どうぞお楽しみに!


Viewing all articles
Browse latest Browse all 2088

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>