VBA開発

VBAでIE操作「IEでaタグ(ハイパーリンク)をクリックする」【エクセルマクロ】

IEでハイパーリンク(いわゆるリンク)をクリックしたいケースがあります。
よく使用するのはブログをさかのぼる為の「次へ」や「前へ」でも、aタグ仕様しています。
こちらを例に使用方法をお伝えします。

基本はfor eachで全ての要素をチェックする

VBAでIE操作「IEでsubmitボタンをクリックする」【エクセルマクロ】と考え方は一緒です。
「URL」を要素をチェックしてクリックするだけです。

HTML(Aタグ)のサンプル

 //HTMLサンプル inputタグにaタグ(ハイパーリンク)
<div class="pagination-next">
<a href="https://vba-create.jp/category/kyoteivba/kyotei-manual/page/2/" class="pagination-next-link key-btn">
次のページ
</a>
</div>

VBAでAタグをクリック

下記VBAコードサンプルのように、for eachで「送信」が含まれる文字を探して、クリックします。

'■aタグをクリックする場合
For Each objTag In objIE.document.getElementsByTagName("a")
    '■Tagがaのhtml(outerhtml)内に「次のページ」が含まれていたら、
    If InStr(objTag.outerHTML, "送信") > 0 Then
        '■■送信ボタンクリック
        objTag.Click
        Exit For
    End If
Next

注意点

では、タグって何なの?という方はVBAではなく、HTMLを少し勉強が必要です。
HTMLタグ一覧を参照して、目的のタグを探してください。
これを理解しておかないとIE操作はできません。

基本的にIE操作でクリックするのは以下の2パターンです。

for eachでループするのはメモリがオーバーし、VBAがエラーを起こすのでは?と思われるますが、
そこまで時間がかかるわけではなく、エラーが起きるのは違う要因がほとんどだと考えます。

その他

Internet Explorerを使用して、Webスクレイピングは敷居が高い風に捉えられますが、
上記のように、パーツ化して組み合わせ処理するだけです。

Web上のデータを触りたい要望は会社様でも個人様でも多いと思います。
VBA IE操作を覚えて効率化しませんか?
作成が大変であれば弊社で代行開発も可能です。お気軽にお問い合わせください。

 

コメント

タイトルとURLをコピーしました