リンクをクリックするサンプルです。標準モジュールに以下のコードを追加して、GoToYahooAuctionプロシージャを実行します。GoToYahooAuctionプロシージャを実行すると、Yahoo! JAPANに接続します。そして5秒後に「ヤフオク!」のリンク経由でヤフオク!に移動します。
サンプルコード
【動作確認日】2014年2月11日
【動作確認環境】Windows XP SP3・Excel 2007・Internet Explorer 8
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
'ヤフオクに移動する Sub GoToYahooAuction() Dim objIE As Object 'IE起動 Set objIE = CreateObject("InternetExplorer.Application") objIE.Visible = True 'Yahooに接続 objIE.navigate "https://www.yahoo.co.jp/" 'IEを待機 Call IEWait(objIE) '5秒停止 Call WaitFor(5) '「ヤフオク!」のリンクをクリック Call IELinkClick(objIE, "ヤフオク!") 'IEを待機 Call IEWait(objIE) '5秒停止 Call WaitFor(5) 'IE終了 objIE.Quit Set objIE = Nothing 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 'IEを待機する関数 Function IEWait(ByRef objIE As Object) Do While objIE.Busy = True Or objIE.readyState <> 4 DoEvents Loop End Function '指定した秒だけ停止する関数 Function WaitFor(ByVal second As Integer) Dim futureTime As Date futureTime = DateAdd("s", second, Now) While Now < futureTime DoEvents Wend End Function |
解説
今回はIELinkClickという関数を導入しました。引数にはリンク先のアンカーテキストを渡します。ページ内に含まれるすべてのaタグのアンカーテキスト(objLink.innerTextプロパティ)をチェックし、引数のアンカーテキストと同じかどうかチェックしています。アンカーテキストが同じなら、aタグのURLに接続します。同じ画面に「ヤフオク!」のアンカーテキストが二つある場合は、また別の処理が必要が今回は省略しています。