[三流君] [VBAで楽しく] [VBA IE 操作]
−−> No.071 IE操作 リンク先を取出す .Document.links(i).href

IE操作 リンク先を取出す .Document.links(i).href

関連リンク 2008/02/04: [三流君CODEのゴミ箱: VBA IE操作 リンクの取り出し と ダウンロード IE6+Excel2003] ←ダウンロードとの組み合わせとサンプルファイルです。サンプルにキレがないけど こちらも合わせてみてください

メルマガ発行内容

<IE操作 リンク先を取出す .Document.links(i).href>

こんにちは、三流プログラマーKen3です。 今回は、 IEで表示したURLのリンク先を取得したい です。

/* * 1.今回のキッカケ */

前回の発行で、いろいろとIEの中身をいやらしく探ってたので、 自動巡回ソフト?の前準備、探りとして、 今回は、IEで表示したページのリンクを探りたいと思います。 将来的には、自動エロ画像収集巡回、自動クリック、自動チケットアタック を作りたいですね。 えっ、動機が不純だって? 不純な動機ほど気合が入るんですよ(それは変わり者のKen3だけかな?)

/* * 2.またまた、IEオブジェクトの中身を探れ(手ごわい彼女の心の中?) */

[No.52 InternetExplorer.application .document.body.innerText] ( http://www.ken3.org/backno/backno_vba11.html#52 を参照) では、 彼女(オブジェクト)の中身を探る方法を少し書きました。 それにしても、階層が深いです。 テーブル系のオブジェクトを探すが、なかなか見つからない。 (女の子じゃなくって、IEの心の中は複雑なのね、、、) 前回と同じ台詞でつまらないよ。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 探り方がわかれば、あとは応用なので。 街中のナンパ同様、一回成功すれば、あとは応用なので と、成功したこと無い私が書いても説得力無いけど(笑) いつもの、馬鹿な前置きは置いといて、 いやらしい目で頭から探っていくと(ほんとは真剣な目ですよ) デバックで止めて、変数の中身を見ます。 *ウォッチ式を追加して、確認します。 ? objIE.Document.links(1).outertext [ 掲示板 ] ? objIE.Document.links(1).outerHTML <A href="http://www.ken3.org/cgi-bin/bbs/vba/wforum.cgi" target=_blank>[ 掲示板 ]</A> .href .outertext .outerHTMLが使えそうなので、 ~~~~~~~~~~~~~~~~~~~~~~~~~~~ 今回使ってみます。 *さらっと書いてるけど、ここまでたどり着くのにかなりかかっている(笑) これを使えばなんとかできそうです。

/* * 3.単体テストが完了、作成してみる */

単体のオブジェクト、プロパティの確認が終わったので、作成に取りかかります。
Sub ken3_url()

    Dim objIE As InternetExplorer
    Dim time10    As Date
    Dim strURL    As String
    Dim i         As Integer

    On Error GoTo EMSG

    Rows("13:1000").Select  '結果の表示エリアをクリアする
    Selection.Delete Shift:=xlUp

    Set objIE = CreateObject("InternetExplorer.application")
    objIE.GoHome
    objIE.Visible = True
    
    Do While objIE.Busy = True  '起動まで待つ
        DoEvents
    Loop
    
    nYLINE = 10  '10行目からチェックスタート
        
    Cells(nYLINE, 1).Select
    DoEvents
    Cells(nYLINE, 2) = Now()  'テストで時間を代入
    
    strURL = Trim(Cells(nYLINE, 1)) 'URL代入
    objIE.Stop '読み込み停止(意味無いけど)
    
    objIE.Navigate "" & strURL  'アドレスを渡し表示する

    '読みこみ完了まで待つ
    '20秒後を計算して、待つ
    time10 = DateAdd("s", 20, Now())
    Do While objIE.Busy = True
        DoEvents
        If time10 < Now() Then
            Exit Do
        End If
        DoEvents
    Loop

    If objIE.Busy = True Then
        Cells(nYLINE, 4) = "読み込みに失敗しました"
        MsgBox "読み込みに失敗しました"
    End If

    'リンクを探す
    nYLINE = 13  'セット位置を代入
    'リンク数分まわす
    For i = 0 To objIE.Document.links.Length - 1
        Cells(nYLINE, "A") = "'" & objIE.Document.links(i).outerText
        Cells(nYLINE, "B") = "'" & objIE.Document.links(i).href
        Cells(nYLINE, "C") = "'" & objIE.Document.links(i).outerHTML
        nYLINE = nYLINE + 1 'セット位置を+1する
    Next i
    
    objIE.Quit   'IEを閉じる

    MsgBox "終了しました"

    Exit Sub
    
EMSG:
    Cells(nYLINE, 2) = "ERR"
    objIE.Quit   '
    MsgBox "errが発生しました"
    Exit Sub

End Sub
ポイントは、 ~~~~~~~~~~~~ objIE.Document.links.Length でリンクの数を取得できるので、 'リンク数分まわす For i = 0 To objIE.Document.links.Length - 1 Cells(nYLINE, "A") = "'" & objIE.Document.links(i).outerText Cells(nYLINE, "B") = "'" & objIE.Document.links(i).href Cells(nYLINE, "C") = "'" & objIE.Document.links(i).outerHTML nYLINE = nYLINE + 1 'セット位置を+1する Next i で、 objIE.Document.links(i).outerText objIE.Document.links(i).href objIE.Document.links(i).outerHTML をそれぞれセットしてみました。 使えそうなプロパティあったかなぁ?

/* * 4.おわりの挨拶 */

今回は、IEのリンク先を見るでした。 読者からの要望は、広告自動クリックソフトだったけど、 そこまでは、実力無かったので(笑) No.52 InternetExplorer.application .document.body.innerText http://www.ken3.org/backno/backno_vba11.html#52 にブレークポイント貼って、ウォッチで表示する画像があるので、 こっちを見ると美人(IE)をウォッチする方法がよくわかります(たぶん) 拾い読みして、 1つでも何かの参考となれば幸いです。 Excel/Access大好き、三流プログラマーKen3でした。 ※今日はふざけすぎました、解除しないでね。

フィードバック

VBA系の→[掲示板]←を覗く、質問を書き込む

評価・感想

No.071を読んだ満足度(評価)は?
5満足(参考になった)
4まぁまぁ(一部参考になった)
3普通(どちらとも言えない)
2なんかなぁ(期待と違った)
1不満(読んで損した気分)
作者に感想・質問を送る場合は下記に気軽に書いてください
あなたのお名前(ニックネーム) さん

作者からの返信は、 不用 E-mail で受信したい
*質問・感想はメルマガで紹介する場合があります


ページフッター(リンクや広告など)

[三流君(TOP ken3.org へ戻る)]
-- [VBA系TOPへ]
---- [VBA系バックナンバー目次へ移動]
------ [VBAでIEを操作 CreateObject("InternetExplorer.application")]・・・実は当店一番人気、VBAでIEを操作するサンプルです
------ [VBAでOutlookの操作 CreateObject("Outlook.Application")]・・・Outlookを使い、メール関係の処理です
------ [Access から Excel 連携 CreateObject("Excel.Application")]・・・人気のAccessからExcelへデータ書き出しなどです
------ [AccessのUserForm/サブフォームを操作]・・・アクセスでフォームを使ったサンプルです
------ [Accessのレポートを操作]・・・レポートを操作してみました
------ [Access クエリー関係やその他関数]・・・あまりまとまってませんが、スポット的な単体関数の解説です
------ [Excel UserForm(ユーザーフォーム)を操作する]・・・エクセルでユーザーフォームを作成して入力などを行ってます
------ [ExcelからAccessを操作する]・・・ExcelからAccessのマクロを起動してみました、
------ [Excel関係 関数、その他]・・・その他Excel関係です
------ [VBAでテキストファイル(*.txt,*.html,*.csv)の操作]・・・テキストファイルを使ったサンプルです
------ [VBA 標準関数関係とその他解説]・・・その他、グダグタ解説してます


広告
-- [通販系の売れ筋広告へ] ←主に楽天やAmazonのランキングです
blog
-- [三流君の作業日記] ← 日々の作業を少々
-- [通販あしあと] ← 通販ページの足跡を一覧で羅列

書籍の購入

Webだけじゃさすがに勉強しきれないので、プログラミング関係の書籍も読んでみては??

コンピュータ書籍の発送がハヤイ専門店

コンピュータの本・専門店
種類が豊富で探し易いです。※在庫ありが48時間以内発送が急ぎで資料や書籍がほしい時、とても助かります。
お奨め本の目次を見るだけでも勉強になったり

amazon.co.jpでキーワード別チェック

下記、私が設定したキーワードですが、こんな感じで資料や書籍を探ってみては?
[VBA全体を把握する] -- やはり全体をさらっと見たいですよね。
[SQL関連でDB力UP] -- システムはデータベース設計が重要
[ADO接続を探る] -- VBAなのでADO接続を押さえておく
[Windows APIを探る] -- さらにAPIになて知ってれば強力だ!
[.NETを探る] -- と言っても時代は.NETに流れてるし
プログラミング以外でも知りたいことは多くって、
[人間関係] -- で、客先・上司、まわりに気を使い。
[プログラマーの自己啓発] -- プログラムだけじゃなくいろいろと向上したいよ
[コーチング・育成] -- 先輩になったら後輩(部下)の面倒をみてね。
そんなこんなでプログラマーっていろいろと大変なんだってば・・・