2016-09-06 38 views
0

私は15,000の製品を持っており、それらがX、Y、Zかどうかを知る必要があります。以下のコードは、製品がXYZのタイプであるかどうかを確認します。要素にページが存在するかどうかを確認してください

神は私を助けます、それは実際に働きます。唯一の例外はAmazonで販売されなくなった製品を検索する場合です。その後、私はこれを探してい要素のIDは、私がページ上に存在しない検索、およびエラー「オブジェクト変数を持つまたはWithブロック行のコードブレーク

text = document.getelementbyID("result_0").innertext 

だ製品の説明が含まれています変数は設定されていません "。

残りのコードを実行する前に要素が存在するかどうかを確認するにはどうすればよいですか?

ありがとうございます!

サム

Sub LetsAutomateIE() 

Dim barcode As String 
Dim rowe As Integer 
Dim document As HTMLDocument 
Set ie = CreateObject("InternetExplorer.Application") 
Dim Element As HTMLDivElement 
Dim text As String 
Dim pos As Integer 

rowe = 2 

While Not IsEmpty(Cells(rowe, 2)) 

barcode = Cells(rowe, "B").Value 

With ie 
.Visible = False 
.navigate2 "https://www.amazon.co.uk/s/ref=nb_sb_noss_1?url=search-  
alias%3Daps&field-keywords=" & barcode 
Do Until ie.readyState = 4 
Loop 
End With 

Set document = ie.document 

text = document.getElementById("result_0").innerText 

If InStr(text, "X") Or InStr(text, "Y") Or InStr(text,  
"Z") <> 0 Then pos = 1 

If pos <> 0 Then Cells(rowe, 4) = "Y" Else Cells(rowe, 4) = "N" 

rowe = rowe + 1 

Wend 

Set ie = Nothing 

End Sub 
+0

エラートラップ –

+0

返された要素がオブジェクトであるかどうかを確認してみてください。 'set Element = document.getelementbyID(" result_0 ")'のようなものです。 InnerTextプロパティを返していない場合は 'ifObject(Element)then'を返し、オブジェクトとして返されたかどうかを確認してください。 –

+0

ありがとう、ライアン!それが設定される前に、要素をどのように暗くする必要がありますか? – Sam

答えて

3

ライアンの答えが正しいです。

セット要素=のdocument.getElementById( "result_0")ソリューションの

0

あなたはこのような何かを試すことができます。

Function objectHandler(objID) 

Dim TestObj As Object 

On Error GoTo Handler: 

Set TestObj = ObjIE.document.getElementById(objID) 
objectHandler = True 
Exit Function 

Handler: 
objectHandler = False 

End Function 
1

おかげ。

If IsObject(objIE.document.getElementById("e164NumberMask")) Then 
    'do true stuff 
Else 
    'do false stuff 
End If 
関連する問題