InternetExplorer(IE)のページのボタンをクリックするコード

スポンサーリンク

ボタンのクリックをして検索結果のページに移る

以前に紹介した、IEのページのテキストボックスに文字を入力するVBAコードやセレクトボックスで値を選択するVBAコードを用いると、YahooやGoogleなどの検索ワードを入力することはできますが、検索ボタンをクリックしないと結果を表示することができません。
そこで今回はボタンをクリックするVBAコードを紹介します。

このVBAコードを使用することにより、「IEで目的のページを開く」→「検索ボックスに文字を入力」→「検索結果ボタンをクリック」の流れで商品の検索結果を表示できるようになり、できることが広がります。

ボタンのクリックする方法は大きく2通り

ボタンのタグはinputタグです。id属性やname属性が割り振られているかどうかでボタンのクリック方法を変えます。
id属性やname属性が割り振られている場合はこれらの属性で指定してボタンをクリックするコードを作ることができます。

逆にid属性やname属性がなければボタンに書かれている文字とclass属性などで目的のボタンを判別してクリックさせるコードを作ります。

①id属性やname属性が割り振られている場合

ボタンのタグはinputタグなので、テキストボックスに文字を入力する場合と同様にタグを指定します。
目的のwebページをobjIEに格納しているときに以下のコードを記載するとボタンをクリックすることができます。

Dim button As HTMLInputElement
Set button = objIE.document.getElementById(“「id属性の値」”)
button.Click
Dim button As HTMLInputElement
Set button = objIE.document.getElementsByName(“「name属性の値」”)(0)
button.Click

楽天やYahooショッピングの検索ボックスなどはこの方法を用いて検索を自動化することができます。

②id属性やname属性が割り振られていない場合

id属性やname属性が割り振られていない場合、他の属性の値や表示されているvalue値などで目的のボタンを絞り込み、クリックさせるコードを用います。Amazonのトップページの検索ボタンは以下のようなタグで記載されていて、id属性やname属性がありません。

<input type=”submit” class=”nav-input” value=”検索” tabindex=”7″/>

このタグをclass属性とvalue値で特定してクリックするコードは以下のようになります。

For Each button In objIE.document.getElementsByClassName(“nav-input”)’クラス属性の値が「nav-input」のものを対象とする
If button.Value = “検索” Then’値が「検索」なら
button.Click’ボタンをクリックして
Exit For’繰り返し処理を抜ける
End If
Next

スポンサーリンク

楽天で検索ワードを入力して検索を行うVBAコード

楽天で検索ワードを入力して検索を行うVBAコードの例は以下のようになります。

Declare Sub Sleep Lib “kernel32” (ByVal dwMilliseconds As Long)
Sub 楽天検索()
’IEの起動と楽天のHPの表示(開いている場合は使用しない)
Shell “C:\Program Files\Internet Explorer\iexplore.exe http://www.rakuten.co.jp/”, vbNormalFocus
Sleep 3000
’楽天のページで検索項目の入力と検索ボタンを押すコード
Dim win As Object
Dim colSh As Object
Dim objIE As InternetExplorer
Dim txtInput As HTMLInputElement
Dim button As HTMLInputElement
Set colSh = CreateObject(“Shell.Application”)
’楽天のページをobjIEに格納
For Each win In colSh.Windows
If TypeName(win.document) = “HTMLDocument” Then
If InStr(win.document.Title, “楽天”) > 0 Then
Set objIE = win
Exit For
End If
End If
Next
If objIE Is Nothing Then
MsgBox “入力するページが見つかりません”
End If
’楽天のページの検索ワードに「アリナミンEXを入力」
Set txtInput = objIE.document.getElementById(“sitem”)
txtInput.Value = “アリナミンEX”
’検索ボタンをクリック
Set button = objIE.document.getElementById(“searchBtn”)
button.Click
’ページが表示されるまで待つ
Do While objIE.Busy Or objIE.readyState < READYSTATE_COMPLETE
DoEvents
Sleep 1000
Loop
Sleep 2000
End Sub

Amazonで検索ワードを入力して検索を行うVBAコード

Amazonで検索ワードを入力して検索を行うVBAコードの例は以下のようになります。

Declare Sub Sleep Lib “kernel32” (ByVal dwMilliseconds As Long)
Sub Amazon検索()
’IEの起動とAmazonのHPの表示(開いている場合は使用しない)
Shell “C:\Program Files\Internet Explorer\iexplore.exe http://www.amazon.co.jp”, vbNormalFocus
Sleep 3000
’Amazonのページで検索項目の入力と検索ボタンを押すコード
Dim win As Object
Dim colSh As Object
Dim objIE As InternetExplorer
Dim txtInput As HTMLInputElement
Dim button As HTMLInputElement
Set colSh = CreateObject(“Shell.Application”)
’AmazonのページをobjIEに格納
For Each win In colSh.Windows
If TypeName(win.document) = “HTMLDocument” Then
If InStr(win.document.Title, “Amazon”) > 0 Then
Set objIE = win
Exit For
End If
End If
Next
If objIE Is Nothing Then
MsgBox “入力するページが見つかりません”
End If
’Amazonのページの検索ワードに「アリナミンEXを入力」
Set txtInput = objIE.document.getElementById(“twotabsearchtextbox”)
txtInput.Value = “アリナミンEX”
’検索ボタンをクリック
For Each button In objIE.document.getElementsByClassName(“nav-input”)
If button.Value = “検索” Then
button.Click
Exit For
End If
Next
’ページが表示されるまで待つ
Do While objIE.Busy Or objIE.readyState < READYSTATE_COMPLETE
DoEvents
Sleep 1000
Loop
Sleep 2000
End Sub

「”アリナミンEX”」の部分を「Cells(1,1).text」などに置き換えるとExcelのセルの値を検索ボックスに入力するVBA(マクロ)が作れます。

これを繰り返したりしてたくさんの検索結果を一気に表示させることもできます。

おすすめ書籍 (広告)

コメント