2016-10-10 9 views
0

VBAを使用して特定のキーワードをHTMLでチェックしようとするとInStrが機能しますが、残念ながら正しい結果が返されません。ここではVBAだ...VBA InStrでHTMLをチェックする

With IE 
    .Visible = True 
    .navigate my_url4 
End With 

Do Until Not IE.Busy And IE.readyState = 4 
    DoEvents 
Loop 

promo = IE.Document.getElementsByTagName("td") 
Debug.Print promo 
If InStr(promo, "C8") = 0 Then 
    ActiveSheet.Range("C10") = "Not Found" 
Else 
    ActiveSheet.Range("C10") = "Found" 
End If  

ここで私は、セルC8の値をチェックするようにしようとしているHTML ...

<div style="overflow:auto; height=75%; scrollbar-face-color: #D6DFF7; scrollbar-track-color:white;"> 
<table border="1" width="100%" cellspacing="0" cellpadding="10" style="border-collapse: collapse" bordercolor="#111111"> 

    <tr> 
     <td class='Header'>Customer History from Monday, September 12, 2016 to Monday, October 10, 2016 </td> 
    </tr> 

    <table border='1' width='100%' cellspacing='0' cellpadding='2'> 
     <tr> 
      <td class="Content" align="center" width="20%"><b>Promotion</b></td> 
      <td class="Content" align="center" width="28%"><b>Issue Date</b></td> 
     </tr> 
    </table>     


    <table border='1' width='100%' cellspacing='0' cellpadding='2'> 
    <tr> 
     <td class='Content' width="20%"> October Offer </td> 
     <td class='Content' width="28%"> 10/10/2016 10:50:38 AM </td> 
    </tr> 
    </table> 

    <table border='1' width='100%' cellspacing='0' cellpadding='2'> 
    <tr> 
     <td class='Content' width="20%"> Exclusive Online Promotion! </td> 
     <td class='Content' width="28%"> 10/10/2016 10:50:32 AM </td> 
    </tr> 
    </table> 

    <table border='1' width='100%' cellspacing='0' cellpadding='2'> 
    <tr> 
     <td class='Content' width="20%"> Exclusive October Offer </td> 
     <td class='Content' width="28%"> 10/10/2016 10:50:10 AM </td> 
    </tr> 
    </table> 

は、どんなに私が何に入力ませんセルC8 C10で同じ結果が得られ、InStrが常に0に戻るので、「プロモーション」変数に何か問題があると信じられています。

洞察が得られるでしょう。

+0

を「範囲( "C8")。値に変更する必要があります。親子をワークシートに割り当てるとさらに優れています。 –

+1

@ScottHoltzman - 10秒で私を倒してください! – YowE3K

答えて

1

If InStr(promo, "C8") = 0 Thenありがとう変数promo文字列内の文字列「C8」を探しています。セルC8の値を調べるには、

If InStr(promo, ActiveSheet.Range("C8").Value) = 0 Then 
+0

私はお詫びします、私はトラブルシューティング中に急いでこれを投稿しました。私の元のコードは正しい構文を持ち、残念ながら正しく動作しませんでした。たとえば、私が知っているセルC8のテキストはHTMLにありますが、まだ "見つからない"と表示されています。これを引き起こす可能性のある他のアイデア? でIE .Visible = Trueの .navigate my_url4 端と –

+0

修正したコードは 'ないIE.BusyそしてIE.readyState = 4つの DoEvents関数 Untilループ プロモーション= IE.Document.getElementsByTagName( "TD") InStr関数(プロモーション、ActiveSheet.Range( "C8")。値)= 0次に ActiveSheet.Range( "C10")= "発見" エルス ActiveSheet.Range( "C10") "が見つかりませんでした" =場合Endもし ' –