IEで画像リンク(画像ボタン)をクリックしたいケースがあります。
ヤフオクのトップページを例に使用方法をお伝えします。
VBAでIE操作「IEでsubmitボタンをクリックする」【エクセルマクロ】と考え方は一緒です。
画像要素をチェックして、該当すればクリックします。
alt属性とsrc属性ではチェックする方法が異なります。
ALTが設定されていれば、.altをチェックしてクリック
alt属性が設定されていれば、objTag.altを確認します。
ヤフオクトップページのキャンペーンやウォッチリストの画像にはalt属性が設定されています。2020/07/06時点
//HTMLサンプル aタグにaltタグが設定されている画像ボタン <div class="acMdCard"> <a href="https://rdsig.yahoo.co.jp/auction/promo/gogo5/pc/top/bnr/RV=XXX" data-ylk="rsec:apr1;slk:5nohi;pos:1" data-rapid_p="25"> <img src="https://s.yimg.jp/images/auct/salespromotion/2019_6/0615_gogo5/782_376.png" alt="GO!GO!入札!5のつく日キャンペーン" width="391" height="188"> </a> </div>
VBAでalt属性をクリック
下記VBAコードサンプルのように、for eachでaltタグが「GO!GO!入札!5のつく日キャンペーン」であれば、クリックします。
'■alt属性を利用してクリックする場合 For Each objTag In objIE.document.getElementsByTagName("a") '■TagがAのaltに「指定文字」が含まれていたら、 If objTag.alt = "GO!GO!入札!5のつく日キャンペーン" Then '■■リンク画像クリック objTag.Click Exit For End If Next
ALTがなければ、srcをチェックしてクリック
alt属性が設定されていれば、instr関数を利用しsrcの内容をチェックします。
上記ヤフオクのHTMLはalt属性がありましたが、
alt属性がないページの場合は、srcの内容をチェックしクリックしましょう。
(alt属性があってもこちらの方法でクリックする事もできますが、わざわざsrcでする必要性もないでしょう)
VBAでsrcをチェック
下記VBAコードサンプルのように、for eachでsrcが「指定URL」であれば、クリックします。
'■src属性をクリックする場合 For Each objTag In objIE.document.getElementsByTagName("a") '■Tagがaのhtml(outerhtml)内に「指定URL(指定文字)」が含まれていたら、 If InStr(objTag.outerHTML, "0615_gogo5/782_376.png") <> 0 Then '■■画像ボタンクリック objTag.Click Exit For End If Next
注意点
基本的にIE操作でクリックするのは以下の2パターンです。
その他
Internet Explorerを使用して、Webスクレイピングは敷居が高い風に捉えられますが、
上記のように、パーツ化して組み合わせ処理するだけです。
Web上のデータを触りたい要望は会社様でも個人様でも多いと思います。
VBA IE操作を覚えて効率化しませんか?
作成が大変であれば弊社で代行開発も可能です。お気軽にお問い合わせください。
コメント
[…] VBAでIE操作「IEで画像(alt・src)ボタンをクリックする」【エクセルマクロ】 […]