2016-10-10 57 views
0

尝试使用VBA函数InStr检查HTML的特定关键字,但不幸的是它没有返回正确的结果。这里的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“'更改为'范围(”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中,但仍显示为“未找到”。任何其他的想法可能会导致这种情况? –

+0

更正代码'随着IE 。可见=真 .navigate my_url4 结束随着 做,直到不IE.Busy而IE.readyState = 4周 的DoEvents 环路 促销= IE.Document.getElementsByTagName( “TD”) 如果InStr函数(宣传片,ActiveSheet.Range( “C8”)。值)= 0然后 ActiveSheet.Range( “C10”)= “未找到” 否则 ActiveSheet.Range( “C10”)= “找到” 结束如果' –