(例)リンクをクリックしてみる | カメレオンのVBA

カメレオンのVBA

VBAの私的メモ書き

ヤフー占いでしし座のリンクをクリックしてみる。

1:事前にHPを開いておく12星座占い - Yahoo!占い

2:↓のコードを実行する。今回は[IMG alt="]から「しし座」というキーワードを探してクリックする。

’↓↓↓↓↓↓ここから↓↓↓↓↓
    Dim objIE As InternetExplorer

Sub リンククリックテスト()
'あらかじめIEでホームページを開いておく
    Set objIE = IE取得開始("12星座占い - Yahoo!占い")  '開いているHPのタイトルを指定
    objIE.Visible = False '見えるないようにする→バックグラウンドで実行する
   
    '1:IEを起動する
    Do While objIE.Busy Or objIE.readyState < READYSTATE_COMPLETE
        DoEvents
    Loop


    Dim HTMLDoc As HTMLDocument
   
    Set HTMLDoc = objIE.document
   
    Dim img1 As HTMLImg  'HTMLのイメージを宣言
   
    For Each img1 In HTMLDoc.getElementsByTagName("IMG")
        If InStr(img1.alt, "しし座") > 0 Then ’しし座という名前が含まれているか確認する
            img1.Click  'クリックする
            Exit For    'ループから抜ける
        End If
    Next
   
    Call 画面移動が完了するのを待つ
   
    objIE.Visible = True '見えるようにする
End Sub

Private Function IE取得開始(arg_title As String) As InternetExplorer
'開いているIEの中でタイトルと一致するHPを探す
    Dim ie As InternetExplorer
    Dim sh As Object
    Dim win As Object
    Dim document_title As String
   
    Set sh = CreateObject("Shell.Application")
   
    For Each win In sh.Windows
        document_title = ""  '開いているIEのタイトルを格納した変数をクリア
        On Error Resume Next
        document_title = win.document.Title  '開いているIEのタイトルを格納
        On Error GoTo 0
       
        If InStr(document_title, arg_title) > 0 Then
        'タイトルと引数(検索ワード)とが一致する
            Set ie = win
            Exit For  '一致したらループから抜ける
        End If
    Next
   
    Set IE取得開始 = ie  '検索結果を処理をするHPとする
End Function

Private Sub 画面移動が完了するのを待つ()
'EADYSTATEがCOMPLETEになるまで待つ
   
    Do While objIE.Busy Or objIE.readyState < READYSTATE_COMPLETE
        DoEvents
    Loop
End Sub

’↑↑↑↑↑↑ここまで↑↑↑↑↑↑

3:結果が表示される