VBAのIE制御で、ある検索結果ページのリンク情報を抽出 削除
Message#2 2014年9月24日(水)12時34分 From: 管理人 |
こちらのVBA処理ですが、ご質問の内容とぜんぜん異なる処理のようですね^^; あと、言葉のニュアンスだと思うのですが、「リンク先の情報を抽出」というのは、「リンクをクリックしてそのページを表示」という意味合いでしょうか? そして、ページが表示されたらまた次のリンクをクリックしてページを開くということで大丈夫ですか? 一応処理としては以下になります。 ご確認ください。 【プログラム】 Sub sample() Dim objIE As InternetExplorer 'InternetExplorerでページを表示 Call ieView(objIE, "http://www.vba-ie.net/") 'InternetExplorer操作の準備(ライブラリ追加)リンククリック Call tagClick(objIE, "a", "InternetExplorer操作の準備(ライブラリ追加)") 'IE(Internet Explorer)を閉じるリンククリック Call tagClick(objIE, "a", "IE(Internet Explorer)を閉じる") End Sub ■IE制御サブルーチン Public objIE As InternetExplorer Public objTag As Object Public objOption As Object Sub ieView(objIE As InternetExplorer, _ urlName As String, _ Optional viewFlg As Boolean = True, _ Optional ieTop As Integer = 0, _ Optional ieLeft As Integer = 0, _ Optional ieWidth As Integer = 1200, _ Optional ieHeight As Integer = 1000) Set objIE = CreateObject("InternetExplorer.Application") objIE.Visible = viewFlg objIE.top = ieTop objIE.Left = ieLeft objIE.Width = ieWidth objIE.Height = ieHeight objIE.navigate urlName Call ieCheck(objIE) End Sub Sub ieCheck(objIE As InternetExplorer) Dim timeout As Date timeout = Now + TimeSerial(0, 0, 10) Do While objIE.Busy = True Or objIE.readyState <> 4 DoEvents Sleep 100 If Now > timeout Then objIE.Refresh timeout = Now + TimeSerial(0, 0, 10) End If Loop timeout = Now + TimeSerial(0, 0, 10) Do Until objIE.document.readyState = "complete" DoEvents Sleep 100 If Now > timeout Then objIE.Refresh timeout = Now + TimeSerial(0, 0, 10) End If Loop End Sub Sub tagClick(objIE As InternetExplorer, tag As String, tagStr As String) For Each objTag In objIE.document.getElementsByTagName(tag) If InStr(objTag.outerHTML, tagStr) > 0 Then objTag.Click Call ieCheck(objIE) Exit For End If Next End Sub |
上のメッセージを削除します。
よければパスワードを入力し、削除ボタンをクリックしてください。