VBAのIE制御で、ある検索結果ページのリンク情報を抽出
未読分:3件
昨日以降(0) 2日前以降(0) 3日前以降(0) 4日前以降(0) 5日前以降(0)
近田 伸矢, 植木 悠二, 上田 寛
IEのデータ収集&自動操作のプログラミング本はこの1冊だけ!IEの起動やポップアップウィンドウ、表示を制御する基本的なコードはもちろん、テキストボックスやラジオボタン、表、ハイパーリンクなどのHTML部品を制御する方法など、自動操作に欠かせないノウハウを丁寧に解説。
Message#3 2014年9月26日(金)10時19分 From: なおと | 返事 削除 変更 |
回答ありがとうございます。 仰るとおりの内容です。 クリック処理ってこうやるんですね。 思ったより簡単だったので僕にもできそうです! |
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 |
Message#1 2014年9月24日(水)03時25分 From: なおと | 返事 削除 変更 |
VBAのIE制御で、ある検索結果ページからリンクに飛んでリンク先の情報を抽出し、また次のリンクに移動し情報を抽出し…というプログラムを作ろうとしています。 1つ目のリンク先の情報を抽出する事には成功したのですが、次のリンクに進む事ができません。どうすれば良いか教えて頂けませんか? 現在書いているコードは下記のようなイメージです。 Dim objIE As InternetExplorer Dim anchor As HTMLAnchorElement For Each anchor In objIE.Document.getElementsByTagName("A") If InStr(anchor.innerText, "■") > 0 Then anchor.Click Call 情報を抽出してエクセルに転記 Exit For End If Next objIE.GoBack 使えそうなメソッドやプロパティを教えて頂けるだけでも助かります。よろしくお願いします。 |
昨日以降 2日前以降 3日前以降 4日前以降 5日前以降