Excel VBA:根据内部文本检查网页上的复选框

时间:2017-02-01 14:29:40

标签: javascript html excel vba

我知道关于如何选中复选框的问题很少,但我处理的情况不可能。

以下是网页代码示例:

<tr class="odd">
  <td>
    <input type="checkbox" name="device_id" value="3896">
  </td>
  <td>text1</td>
  <td>text2</td>
  <td>xxx</td>
  <td>
    Good
  </td>
  <td>
   </td></tr>

<tr class="odd">
  <td>
    <input type="checkbox" name="device_id" value="3955">
  </td>
  <td>text3</td>
  <td>text4</td>
  <td>xxx</td>
  <td>
    Good
  </td>
  <td>
</td></tr>

这只是一个样本,有数百个这样的“条目”。

我有一个宏打开一个页面并导航到应该的位置。检查基于值的复选框也不是问题,值是数据库在内部分配给text1 / text2,text3 / text4等的ID。问题是我不知道该ID,我所知道的只有text1 / text2,text3 / text4等。

我正在努力的是,如果我只知道那些文本,如何检查该复选框?我知道有一种方法如何匹配文本和ID,然后使用该ID来检查复选框,但我不知道如何进行匹配。任何帮助将不胜感激: - )

谢谢。

1 个答案:

答案 0 :(得分:0)

这对我有用:

查找&#34; tr&#34;部分主机名或IP是,然后只读取ID值。

' find tr and ID
For i = 1 To 5000
    checkdevX = ie.Document.getElementsByTagName("tr")(i).innerText
    If InStr(checkdevX, "text2") Then
        idvalue = ie.Document.getElementsByTagName("tr")(i).getElementsByTagName("td")(0). _
                    getElementsByTagName("input")(0).getAttribute("value")
        Exit For
    End If
Next i

' check checkbox
Set CheckBox = ie.Document.getElementsByTagName("input")
    For Each idnumber In CheckBox
        If (idnumber.getAttribute("value") = idvalue) Then
            idnumber.Click
            Exit For
        End If
    Next