Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


10444 / 76734 ←次へ | 前へ→

【71836】Re:リンク切れURLチェックについて
発言  hint  - 12/4/13(金) 23:14 -

引用なし
パスワード
   参考までに、コードの一例を末尾に示します。下敷きにして下さい。

◇--------------
>「ページが見つかりません」,「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などで変換すればよいかも。)
---------------------------
なお、
指摘があったが、確かに、こんなことにトライする超初心者はあり得ない。
だからコードに関する質問に答えるつもりはありません。
回答がつかないのは、超初心者と名乗る意図があざとすぎて、敬遠されているのだろう。
どこまでできているのか、自分の手の内を示して、堂々と質問すべきでしょう。
(このような質問文を寄せる超初心者はいないが、万一、真の超初心者なら、
もっと適切なテーマに取り組むべきでしょう。)

3 hits

【71816】リンク切れURLチェックについて あさみ 12/4/12(木) 0:42 質問
【71817】Re:リンク切れURLチェックについて とおりすがり 12/4/12(木) 8:22 発言
【71827】Re:リンク切れURLチェックについて あさみ 12/4/12(木) 21:36 発言
【71836】Re:リンク切れURLチェックについて hint 12/4/13(金) 23:14 発言
【71839】Re:リンク切れURLチェックについて あさみ 12/4/14(土) 14:21 お礼

10444 / 76734 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free