その買うを、もっとハッピーに。|ハピタス

リンクをクリック - VBA、IE制御

リンクをクリックする関数です。
リンク先のURLに◯◯という文字列が含まれてたらとか色々やりようはありますが、今回のはアンカーテキストを指定してクリックします。直感的です。

'---------------------------------------------------------------
'関数名:linkClickByAnchorText
'内容:指定文字列のリンクをクリック
'引数1:IEオブジェクト
'引数2:リンクのアンカーテキスト
'引数3:同じアンカーテキストが複数ある場合、何番目のリンクか
'戻り値:無し
'---------------------------------------------------------------
Sub linkClickByAnchorText(ByVal objIE As Object, ByVal innerText As String, Optional ByVal num As Long = 1)
    Dim i As Long, Cnt As Long
    Cnt = 1
    With objIE.document.Links
        For i = 0 To .Length - 1
            If .item(i).innerText = innerText Then
                If Cnt = num Then
                    .item(i).Click
                    Exit Sub
                Else
                    Cnt = Cnt + 1
                End If
            End If
        Next i
    End With
End Sub


昔作った関数ということもあって、普通のFor文でループしてますね。
最近はFor Eachの方が好きでそっちばかり使ってます。


使い方は、第一引数にはIEオブジェクト、第二引数にはアンカーテキスト、第三引数はオプションですが、同じアンカーテキストがある場合、何番目のリンクをクリックするか指定します。
例えば当ブログの場合、「<前の3日分」というアンカーテキストが二つありますが、下の方をクリックしたかったら2を引数に指定します。
この例の場合はリンク先が同じなのであまり意味ないかもしれませんが、飛び先が違う場合は指定が必須になりますね。
省略した場合は1番目のリンクをクリックします。