私はいくつかのウェブサイトでいくつかのアイデンティティを特定するためにvbaにいくつかのコードを書いています。コードが正しい順序であれば、コードはうまくいきます。リンクが有効であれば、名前はa
タグと一致し、最終的に正規表現はIDを見つけることができます。 3つのうちの3つまたは3つのいずれかが不良検索である場合、スクリプトはエラーをスローします。私はすでに下のスクリプトでエラーが発生する位置を指定しました。誤った結果を防ぐためにエラーを効率的に処理するにはどうすればよいですか?
私はあなたにどのような解決策を提供し、すべてのリンクが使い果たされるまで私のスクリプトをどのように続けることができるか、私にはあなたの専門家から期待しています。
私はVBAに関する多くの知識を持っていないので、私はOn error resume next
でエラーをスキップしようとしました。しかし、結果を見てみると、明らかに混乱することがわかります。私はOn error resume next
を使用したときに得られるものの大まかな例を貼り付けています。私は何を得るOn error resume next
を使用する際
Sub Identity_Finder()
Dim http As New XMLHTTP60, html As New HTMLDocument
Dim post As Object, link As Variant, refined_links As String
Dim rxp As New RegExp, identity As Object
For Each link In [{"http://spltech.in/","http://www.unifrostindia.com/","http://www.unitfrostindia.com/","http://www.greenplanet.in/"}]
With http
.Open "GET", link, False
.send '''throws here the first error if the link is invalid
html.body.innerHTML = .responseText
End With
For Each post In html.getElementsByTagName("a")
If InStr(post.innerText, "certain_name") > 0 Then refined_links = post.href: Exit For
Next post
With http
.Open "GET", refined_links, False
.send ''throws another error here if no such link is found
End With
With rxp
.Pattern = "some_regex"
.Global = True
Set identity = .Execute(http.responseText)
End With
r = r + 1: Cells(r, 1) = link
Cells(r, 2) = identity(0) ''''throws another error here if no such identity is noticed
Next link
End Sub
:
John executive
Mac lawyer
lulu lawyer
Robin lawyer
Cathy student
予想される出力:
John executive
Mac lawyer
lulu
Robin
Cathy student
空のフィールド(彼らが発見されていない)以前の値で埋めなっています私はOn error resume next
を使用します。この誤解を招く結果を回避するにはどうすればよいですか?前もって感謝します。
ロジックを実行する場所を確認するためにコードをステップバイステップで実行しましたか? 'F8'を押してコードを起動し、もう一度コードの次の行に移動すると...など。ロジックの問題をデバッグするのに最適です:) – Maldred
はい何度もデバッグしても問題はありませんリンクは無効ではなく、名前は 'a'タグと一致し、regexは自分の投稿ですでに説明したアイデンティティーを見つけました。しかし、3つのうちのいずれかが検索と一致しないときにエラーが発生し、エラーが発生したスクリプト内の位置をすでにマークしています。ありがとう。 – SIM