患者中心の保健医療を支える
処方情報分析のリーディングカンパニー

 03-3239-6840

Excel VBAでInternet Explorerを操作してみよう!(中編)

time 2017/03/27

※解説記事内の画像はExcel 2010のものです。

こんにちは、トマトニックです。以前の記事「Excel VBAでInternet Explorerを操作してみよう!(前編)」に引き続き、Excel VBAを使ってInternet Explorerを操作したいと思います。

前回の導入部でも話をさせて頂いた通り1行1行のプログラムの内容というよりも、まずは動くモノを作ってみようという趣旨で紹介させて頂きます。

では、早速前回のソースコードを見ていきましょう。

※本記事は「Internet Explore 11」で動作確認しています

※ソースコードをコピペした際に「"」、「'」などが全角になる場合があるようです。半角に直してからプログラムを実行してください。

前回の振り返り

 '接続先URL
Public Const url As String = "http://www.pmda.go.jp/PmdaSearch/iyakuSearch/"
Sub main()

Dim objIE As InternetExplorer

'IE(InternetExplorer)のオブジェクトを作成する
Set objIE = CreateObject(“InternetExplorer.Application”)

'IEを表示する
objIE.Visible = True

'Pmdaの検索ページを表示する
objIE.navigate url

End Sub

このソースでInternet Explorerを起動し、特定のサイトを表示しています。

(VBAは「'」から始まる一文がコメント文となっており1行1行の意味を理解したい方はこちらのコメント文を参考にして頂ければと思います。)

Public Const url As String = "http://www.pmda.go.jp/PmdaSearch/iyakuSearch/"

 

ここで重要なのは上記のコードで「"」で囲まれたURLをInternet Explorerで表示させています。

試しに「"http://www.pmda.go.jp/PmdaSearch/iyakuSearch/"」の部分を「"http://www.yahoo.co.jp/"」に変えるとYahooが表示されます。

コーディング

普段、ブラウザを立ち上げた時にPCの処理状況や回線速度などの関係でなかなかサイトが表示されない時があります。この場合、サイトが表示されるまで待たなければなりません。VBAでも同じでサイトが表示されるまで「待つ」というコーディングが必要です。改良版が下記のソースコードとなります。

 

#If VBA7 Then
Private Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal ms As LongPtr)
#Else
Private Declare Sub Sleep Lib "kernel32" (ByVal ms As Long)
#End If

'接続先URL
Public Const url As String = "http://www.pmda.go.jp/PmdaSearch/iyakuSearch/"
Sub main()

Dim objIE As InternetExplorer

'IE(InternetExplorer)のオブジェクトを作成する
Set objIE = CreateObject("InternetExplorer.Application")

'IEを表示する
objIE.Visible = True

'Pmdaの検索ページを表示する
objIE.navigate url

'IEの表示を待つ
Call ieWait(objIE)

End Sub

Sub ieWait(objIE As InternetExplorer)

Do While objIE.Busy = True Or objIE.readyState <> 4

Sleep 100
DoEvents

Loop

End Sub

「Sub ieWait(objIE As InternetExplorer)」部分はInternet Explorerの画面が表示されるまで待つよ~という記述になります。「Sleep」はマイクロ秒待つという意味で今回のコーディングでは0.1秒毎に画面の状態を確認をさせています。(Sleep 1000で1秒待ちます。)

検索ワードを入力

次にPmdaに検索ワードを入力したいと思います。そのためにはプログラムにどこに何を入力するか設定する必要があります。通常ウェブサイトはHTML言語によって構成されているためまずPmdaのHTMLソースを確認します。

13_pmda_1

検索ワードは「くすりの名称(一般名・販売名)」直下のテキストボックスに入力する必要があります。右クリックメニューからソースコードをのぞいてみましょう。

14_pmda_1

15_pmda_1

「ソースの表示」をクリックするとエディタが開かれます。「くすりの名称」で検索すると「<input type type="text"」~というタグがあります。「name="nameWord"」となっており、「くすりの名称(一般名・販売名)」直下のテキストボックスは「nameWord」という名称が設定されています。(HTMLのタグについてはまたどこかで解説できればと思います。)

次に検索ボタンの名称についても確認しておきたいと思います。

16_pmda_1

17_pmda_1

同様にソースから「表示件数を選ぶ」で検索すると、付近に「input name="btnA" value="検索"」~というタグがあります。検索ボタンには「btnA」という名称が設定されているようです。

コーディング

Sub main()

Dim objIE As InternetExplorer

'IE(InternetExplorer)のオブジェクトを作成する
Set objIE = CreateObject("InternetExplorer.Application")

'IEを表示する
objIE.Visible = True

'Pmdaの検索ページを表示する
objIE.navigate url

'IEの表示を待つ
Call ieWait(objIE)

'くすりの名称のテキストボックスにフォーカスをあてる
objIE.document.getElementsByName("nameWord")(0).Focus
Call ieWait(objIE)

'テキストボックスに検索ワードを入力
objIE.document.getElementsByName("nameWord")(0).Value = "メトホルミン"
Call ieWait(objIE)

'検索ボタンをクリック
objIE.document.getElementsByName("btnA")(0).Click
Call ieWait(objIE)

End Sub

「Sub main()」部分のみ変更しています。

検索ワードを入力するテキストボックスの名称は「nameWord」、検索ボタンの名称は「btnA」とわかっていますので検索ボタンをクリックするまでの流れを分解すると下記のようになります。

(検索ワードはひとまず「メトホルミン」で固定してます。)

人の動き プログラムの動き
テキストボックスにフォーカスをあてる objIE.document.getElementsByName("nameWord")(0).Focus
検索ワードを入力する objIE.document.getElementsByName("nameWord")(0).Value = "メトホルミン"
検索ボタンをクリックする objIE.document.getElementsByName("btnA")(0).Click

 

「objIE.document.getElementsByName("nameWord")(0)~」という記述でHTMLの要素「nameWord」を取得しています。「(0)」と付けるのは「nameWord」という名称が複数存在した時にどの「nameWord」かを明示させる必要があるためで、今回は0番目の「nameWord」となります。(プログラミングは通常0から数えます。)要素を取得した上でどういうアクションを実行させるかというのが「Focus」、「Value」、「Click」などの記述になります。

まとめ

これで「VBA」から「Internet Explorer」を操作して「Pmda」のサイトを表示し、さらに検索ワードを入力して検索することができました。次回はExcelに記載した検索ワードをもとに「Internet Explorer」を操作していきますのでお楽しみに!

タグ

このブログについて

このブログ(JMIRI Office部)は、製薬企業のマーケティング部門の方やアナリティクス/レポーティングを担当している方に向け、Excel / PowerPointなどのOfficeソフトの使い方、分析の考え方、グラフの使い方、美しい資料の作り方、効率的な作業の進め方など、仕事に役立つ様々な情報を少しゆるめに発信していきます。

Author:医療情報総合研究所(JMIRI)について

医療情報総合研究所 JMIRIは、まだビックデータという言葉が無いころに日本で初めて処方情報データベースの運用・分析を開始した、処方情報分析のリーディングカンパニー。これまでに累計数十万ページ規模の分析レポート/グラフを製薬企業に向けて作成/提供してきました。

[詳細]


お問い合わせ

arrowup

mail