- ベストアンサー
サイトタイトルの指定語句を判断するマクロ
- マクロを使用して、指定範囲のURL先のソースに特定の語句があるかどうかを判断する方法を解説します。
- 指定した語句をソース全体に対して検索するマクロから、<title></title>内のサイトタイトルの中にあるかどうかを判断するマクロへの修正方法について説明します。
- 語句を指定する際に、カッコ「【】」を使用する方法も解説します。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
> 調べたいのは語句ではないですが、"【"というカッコです nRtn = InStr(sHtml, "指定した語句") If nRtn = 0 Then aCell.Offset(, 1).Value = "--" Else aCell.Offset(, 1).Value = "○" End If の部分を If sHtml Like "*<title>*" & "【" & "*</title>*" Then aCell.Offset(, 1).Value = "○" Else aCell.Offset(, 1).Value = "--" End If に変更して試してみてください。
その他の回答 (3)
- kkkkkm
- ベストアンサー率66% (1725/2595)
> どういった記述を足すのでしょうか? HTMLの事についてはよくわかりませんので 元のコードの一部を以下に変更したものを記載して If sHtml Like "*<title>*" & "【" & "*</title>*" Then aCell.Offset(, 1).Value = "○" Else aCell.Offset(, 1).Value = "--" End If "【"がUTF-8のサイトだと認識できるのだが、Shift_JISのサイトでは認識できないのでどうすればいいか、という質問を新たに出してください。その際この質問は締め切ってください。
- imogasi
- ベストアンサー率27% (4737/17069)
「どんなことを質問しているのか」と思って,微修正して、小生が簡単な例で数件やってみました。参考に。 #2のご指摘の点など考慮で来てませんが。 シートC列に、WEB記事のタイトルのテキストを出してみました。 ーー これより先の最終目的達成については判りません。 Sub 指定した語句() '!!!! [Microsoft XML v6.0] に参照設定すること Dim xHttp As IServerXMLHTTPRequest Dim myErr_Number As Long, myErr_Description As String Set xHttp = CreateObject("MSXML2.ServerXMLHTTP") Dim aCell As Range '------------------当シートのA列のデータある業を範囲指定しておいて実行のこと '------------------VBAでも出来るが質問のまま R = 1 For Each aCell In Selection.Columns(1).Cells '選択セルの1列目がURL 'Set aCell = Worksheets("Sheet1").Cells(aceii.Row, "A") 'MsgBox aCell.Value Application.Goto aCell '対象URLの列にジャンプ表示 DoEvents surl = aCell.Value 'MsgBox surl If surl <> "" Then xHttp.Open "GET", surl, True xHttp.setOption SXH_OPTION_IGNORE_SERVER_SSL_CERT_ERROR_FLAGS, _ SXH_SERVER_CERT_IGNORE_ALL_SERVER_ERRORS ' SSL関係のエラーを無視 On Error Resume Next xHttp.send If xHttp.readyState <> 4 Then xHttp.waitForResponse 5 '5秒まってだめならタイムアウト End If If xHttp.readyState <> 4 Then Err.Raise 1004, , "タイムアウト" myErr_Number = Err.Number myErr_Description = Err.Description On Error GoTo 0 If myErr_Number = 0 Then sHtml = xHttp.responseText Debug.Print sHtml nrtn = InStr(sHtml, "<title>") If nrtn = 0 Then aCell.Offset(, 1).Value = "--" Else '見つかった nrtn2 = InStr(sHtml, "</title>") aCell.Offset(0, 1).Value = "○" aCell.Offset(0, 2).Value = Mid(sHtml, nrtn + 7, nrtn2 - (nrtn + 7)) End If Else aCell.Offset(, 1).Value = myErr_Description ' エラー時はエラー内容を表示 End If DoEvents End If Next '----------------------- Set xHttp = Nothing End Sub
補足
回答ありがとうございます。 調べたいURLが10万を越えており、 できるだけ早く調べていくマクロが必要と感じております。 サイトタイトルも取得できたら、ありがたいのですが、 タイトルに"【"が入っているか否か、これを調べていきたいです。 サイトによっては、文字コードがShift_JISのものがあるようで、 これを変換して調べて、10万URLの中から目的のものを取得したいです。 文字コードがShift_JISをUTF-8に変換して取得するには、 どのようなマクロの記述になりますでしょうか? よろしくお願いいたします。
- kkkkkm
- ベストアンサー率66% (1725/2595)
> https://ihan.jp > は、--になってしまいます。 文字コードがShift_JISだからですね。 データを読み込んだ時にShift_JISをUTF-8に変換して操作すればいいと思います。やりかたは調べてみてください。
補足
返信ありがとうございます。 すみません。 こちらのマクロは、前に書いてもらったものであり、 私自身はマクロの知識がまったくない状態です。 >データを読み込んだ時にShift_JISをUTF-8に変換して操作 というのは、どういった記述を足すのでしょうか? よろしくお願いいたします。
補足
回答ありがとうございます! 早速、マクロを変更してやってみました。 すると、"【"があるのに、ちゃんと"○"が付くのと"--"になってしまうのがあります。 例えば、以下のURLは両方ともタイトルに"【"があります。 ですが、 https://kokuei-tcc.co.jp/ は、○が付きますが、 https://ihan.jp は、--になってしまいます。 "【"がある両方のURLに、○が付くようにできるでしょうか? よろしくお願いいたします。