[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『HTMLを読み込むVBA』(メロディ)
お世話になります。 VBAで、InternetExplorer7のソース情報(HTML)を取得し、 リンク切れを発見するようなマクロって作れるのでしょうか? I Eで開いているページ内に、リンク箇所があれば、そのリンクが有効かどうかを チェックするというような機能を作りたいのです。 どのような順序で作っていったらよいかなど、何かヒントがあればおしえてください。 Excel2003 WinXP
指定のURLのWEBページのハイパーリンクを取得する方法です。
三流君VBAでIEのリンクを操作 Document.Linksを探る http://www.ken3.org/cgi-bin/group/vba_ie_link.asp
URL存在チェックに関しては↓が参考になると思います。
[[20100324130207]] 『URLの画像を自動で保存』(みっこ)
(カリーニン)
さっそくのご回答ありがとうございます。 エクセル畑のみなさまにいきなりめちゃくちゃな質問で申し訳なく思っております。
カリーニンさま、それだけではすこしわかりにくいので、 申し訳ないですが、もう少し、ヒントをいただけないでしょうか? よろしくおねがいします。(メロディ)
過程ごとに分けて考えましょう。一つ一つ分けて考えればそんなに難しくはないです。
↓で紹介されているコードで指定のURLのページ゙に含まれるハイパーリンクを取得できます。
「三流君VBAでIEのリンクを操作 Document.Linksを探る」
>3.目的のページからリンク先を取り出し、セルに書き出します。
>解説の前に 先出しで下記、テストで作ったリンク書き出しのプログラムです。
の直下に書かれているコードです。 コードではURLをInputBoxで指定するようになっていますが、ためしに下記のように直接URLを 指定するようにしてみてください。もちろん、定数ではなく変数として渡してやってもいいです。
strURL = "http://www.ken3.org/cgi-bin/group/vba_ie_link.asp"
コードを実行すると、新規ブックのセルにURLやタイトルが転記されていることと思います。
> For i = 0 To objIE.Document.Links.Length - 1 > 'データをセルへセットする 'を付けて文字列にする(セルにセットしたいので) > Cells(yLINE, "A") = "'" & objIE.Document.Links(i).Href 'リンク先 > Cells(yLINE, "B") = "'" & objIE.Document.Links(i).OuterText '自分を含む テキスト(Innerと変わりない?) > Cells(yLINE, "C") = "'" & objIE.Document.Links(i).OuterHTML '自分を含む HTML > Cells(yLINE, "D") = "'" & objIE.Document.Links(i).InnerText '内側のテキスト > Cells(yLINE, "E") = "'" & objIE.Document.Links(i).InnerHTML '内側のHTML > Cells(yLINE, "F") = "'" & objIE.Document.Links(i).Target '_Blank や 表示先フレームの名前など > > yLINE = yLINE + 1 'セット位置(行)を+1する > Next i
これはセルにURL等さまざまな情報を書き込んでいます。リンク先の有無を判定するだけならハイパーリンク のURL以外は不要かもしれません。
ハイパーリンクを取得しながらリンク先の有無をチェックすることはできるかもしれませんが、いったん 全ハイパーリンクを取得した後ハイパーリンク先の有無をチェックする段階に進んだほうがいいかもしれません。 ハイパーリンクURLを溜め込むのはセルではなくともユーザーフォーム上のコントロール類(リストボックス等) でも可能です。
次は取得したURLの存在有無判定です。
>URL存在チェックに関しては↓が参考になると思います。 >『URLの画像を自動で保存』(みっこ)
こちらは不適切だったかもしれません。
指定のURLのリンク先有無チェックのサンプルコードです。 一つのURLしか判定してませんが、FunctionにしてURLを引数として渡してやり、 戻り値をBoolean型の変数(True/False)にしてやればいいかと思います。
Sub test() Dim req Dim MyUrl As String
Set req = CreateObject("Microsoft.XMLHTTP") MyUrl = "http://www.excel.studio-kazu.jp/kw/20100729161514.html?t=184812"
req.Open "GET", MyUrl, False req.Send ' Debug.Print req.Status If Not (req.Status >= 200 And req.Status < 300) Then MsgBox "存在しない" Else MsgBox "存在する" End If End Sub
(カリーニン)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.