|
参考までに、コードの一例を末尾に示します。下敷きにして下さい。
◇--------------
>「ページが見つかりません」,「404 Not Found」などを含んでいれば、
> その文字を返すようなコードは可能でしょうか?
これはあなたがトライすべきです。
警告文は定型ではないので、自動的な判断は難しいでしょう。
◇--------------
> リンク切れしていた企業URLの正しいURLが存在するならば、
> D列にURLを書き出す。
Redirectされていれば、status code 3xxを返すので、それで判断可能。
例外だろうから、移転先は個別に追っていった方が早いかも。
(Locationヘッダで移転先を返してくるが、XMLHt tpは対応していない。
普通にブラウザで開けば、自動で転送先に行くからそれで判る。)
しかし、単に200を示すだけのサイトなら、手の打ちようがない。
正しいURLを自動で探すといっても無理でしょう。
そのページのリンクを追っていく方法もあるかもしれないが、
普通のサイトは、いくらでもそのなかにリンクがあるから、
移転先リンクなどというものを判断するのは困難と見るのが普通。
(そういうときは普通、Redirectを使ったページにするでしょう。)
◇--------------
コード例です。
Sub test()
Dim HReq
Dim myStatus As Long
Dim uri As String
Dim k As Long
Set HReq = CreateObject("Microsoft.XMLHT TP")
' 半角スペースを取って下さい
For k = 2 To Range("A2").End(xlDown).Row
Debug.Print k
uri = Cells(k, 1).Value
HReq.Open "GET", uri, False
On Error Resume Next
HReq.send
On Error GoTo 0
Cells(k, 2).Value = HReq.Status
Cells(k, 3).Value = HReq.statusText
If HReq.Status = 200 Then
Cells(k, 4).Value = Left(HReq.responseText, 500)
Cells(k, 5).Value _
= Left(StrConv(HReq.responseBody, vbUnicode), 500)
End If
Next
Set HReq = Nothing
End Sub
正規表現かなにかで特定の文字列をマッチさせても良いけれど、
定型文字列に限らないから、
シートに書き出して目で確認するのも一法だろう。(字数は調整してください)
UTF-8のサイトは4列目で読める。
S-JISのサイトは5列目で読める。
(EUC-JPはいずれもダメだがご愛敬。AODDB.Streamなどで変換すればよいかも。)
---------------------------
なお、
指摘があったが、確かに、こんなことにトライする超初心者はあり得ない。
だからコードに関する質問に答えるつもりはありません。
回答がつかないのは、超初心者と名乗る意図があざとすぎて、敬遠されているのだろう。
どこまでできているのか、自分の手の内を示して、堂々と質問すべきでしょう。
(このような質問文を寄せる超初心者はいないが、万一、真の超初心者なら、
もっと適切なテーマに取り組むべきでしょう。)
|
|