'--前回からの続き
Private Function CutHMLCode(strTxt As String)
Dim ar As Variant
Dim buf As String, a As String, b As String, tmp As String
Dim i As Long, j As Long, flg As Boolean
If InStr(1, strTxt, "検索結果は0件でした。", 1) > 0 Then
CutHMLCode = "Not Found"
Exit Function
End If
i = InStr(1, strTxt, "<div id=""spoLine"">", 1)
If i > 0 Then
tmp = Mid(strTxt, 1, i - 1)
ar = Split(tmp, "<div class=""prog_block"">", , 1)
flg = True
Else
j = InStr(1, strTxt, "<dl class=""allList"">", 1)
On Error Resume Next
ar = Split(strTxt, "<dd>", , 1)
End If
With CreateObject("VBScript.RegExp")
.Pattern = "<[^>]+>"
.Global = True
For i = 1 To UBound(ar)
j = InStr(1, ar(i), "[", 1)
If j > 0 And flg Then
b = Mid(ar(i), j, InStr(j, ar(i), vbCrLf, 0) - j)
b = .Replace(b, "")
If b Like "[[].[]]" Then
a = a & " " & .Replace(b, "")
Else
a = a & " " & .Replace(b, "")
End If
Else
a = a & " " & .Replace(ar(i), "")
End If
Next
End With
a = Replace(a, vbCr, " "): a = Replace(a, vbLf, " ")
i = InStr(1, a, Space(10), 1): If i > 0 Then a = Mid(a, 1, i)
i = InStr(1, a, " ", 1): If i > 0 Then a = Mid(a, 1, i)
CutHMLCode = a
End Function
●このマクロの注意点
・合計70数回で、Goo辞書にアクセスすると、サーバーが拒否するようです。403:Forbidden が返ります。マクロを遅くしても、変わらないはずです。SetRequestHeader 等を変えれば動きますが、あまり、そのようなことはお勧めしません。時間が経てば復帰します。良いところがあれば、そちらのほうがよいです。ただし、マクロの内容も変えなくてはなりません。
・このマクロには、元の単語のスペルチェックはしていません。最初に書いたコードには、スペルチェック機能を付けましたが、今回はついていません。事前にスペルチェックをしていただいたほうがよいです。また、、
url = sURL & c.Value & "&kind=ej&mode=1&kwassist=0"
ここのmode =1 をお勧めします。見つからない場合は、["Not Found"] が返ります。
mode =0を指定すると、関連のものも出てきます。
・本来は、アクセスのたびごとに、oHttp のオブジェクトを空にするほうが、トラブルが少ないような気がしますが、今回は、その方法はやめました。
補足
これではfirefoxで検索結果を表示するのみで、セルに入力できていません。