初心者でもできるVBA講座【クリック編】

2015/09/17

はじめに

前回、実際にコーディングして「IEを開く」ところまで行きましたね!
今回はハイパーリンクをクリックする方法を説明します!

処理が終わるまで

いきなりハイパーリンクをクリックしようとしても、
ページが開く前に処理が行われてしまいうまく行きません。
なので、ページが開ききるまで待ってもらいましょう。

Sub waitNavigation(IE As Object)
Do While IE.Busy Or IE.Readystate < 4 DoEvents Loop End Sub

この処理は頻繁に使うので、メインプロシージャの外に
コピペし、呼び出しましょう!

プロシージャの呼び出し

プロシージャは親と子があり、親から子を呼び出すことができます。
例えば、一日の行動をマクロにすると、下のように
親で一日の流れを書いて、子で食事を呼び出すというようなことができます。

ハイパーリンク

クリックも頻繁に使うのでメインの外に貼り付け呼び出しましょう!

‘ハイパーリンクのクリック
Function IELinkClick(ByRef objIE As Object, ByVal anchorText As String)
Dim objLink As Object

For Each objLink In objIE.document.getElementsByTagName(“A”)
If objLink.innerText = anchorText Then
objIE.navigate objLink.href
Exit For
End If
Next
End Function

実行

実際に動かしてみましょう!

ヤフーのトップページの「スポーツ」を
開いて見ましょう!

Sub main()  ’変数の宣言
Dim IE As Object
‘IE(InternetExplorer)のオブジェクトを作成する
Set IE = CreateObject(“InternetExplorer.Application”)

‘IE(InternetExplorer)の表示
IE.Visible = True

‘指定したURLのページを表示
IE.navigate “http://www.yahoo.co.jp//‎”

‘処理が終わるまで待機
waitNavigation IE

‘ ハイパーリンククリック
Call IELinkClick(IE, “スポーツ”)   

End Sub

‘ハイパーリンククリック——————————————
Function IELinkClick(ByRef objIE As Object, ByVal anchorText As String)
Dim objLink As Object

For Each objLink In objIE.document.getElementsByTagName(“A”)
If objLink.innerText = anchorText Then
objIE.navigate objLink.href
Exit For
End If
Next
End Function

‘処理が終わるまで待機———————————————–
Sub waitNavigation(IE As Object)
Do While IE.Busy Or IE.Readystate < 4 DoEvents Loop End Sub

最後に

次回は検索窓に文字を入力する方法を説明します。
その時にもクリックは、必要なのでできるようになりましょう!

投稿者情報

t_matt

マーケティング事業部 好きな物:旅行/サッカー/食べ歩き飲み歩き/PARTY/スキューバダイビング/飲み会/キャンプ/ショッピング/BBQ/etc.

>> t_mattが執筆した他の記事を読む

法人向け人気レンタルサーバー
法人向け人気専用サーバー
個人向け人気レンタルサーバー