点击网站上的所有checkbox

我有(在Excel中,VBA)一个子导航到这个网页:

http://www.nordea.dk/wemapp/currency/dk/valutaKurser

并复制报价。 但是,我想删除所有的费率,只添加我的子需求。

要做到这一点,我需要检查所有的框(在表中的左侧),但箱的数量不是恒定的 – 所以我不能硬编码盒名。

我想一个办法是提取整个HTML,确定行数,然后循环。 但是看起来很不方便。 当然有一些比较简单的方法,这需要更less的代码和更less的存储空间。

你可以通过vbNewLine Split()表格并在集合的每一行中search货币( 介意标题 )。
由于input命名如表:body: rows:2 :cells:1:cell:选中您可以使货币与checkbox匹配。
在实践中,它看起来像(获取元素名称):

 Function FirstRow(myArray() As String, Optional curr As String) As Long If curr = "" Then curr = "*[AZ][AZ][AZ]/[AZ][AZ][AZ]*" Else curr = "*" & curr & "*" End If For i = LBound(myArray) To UBound(myArray) If myArray(i) Like curr Then 'FX denoted as "XXX/XXX" FirstRow = i Exit Function End If Next i End Function Sub ert() Dim myArray() As String, URLStr As String URLStr = "http://www.nordea.dk/wemapp/currency/dk/valutaKurser" Set ie = CreateObject("InternetExplorer.Application") ie.Visible = False ie.Navigate URLStr Do Until (ie.readyState = 4 And Not ie.Busy) DoEvents Loop On Error GoTo Err: Data = ie.Document.body.innerHTML 'innerText If False Then Err: Data = ie.Document.body.innerHTML End If myArray = Split(Data, "<tr>") 'vbNewLine) 'vbCrLf) 'For i = LBound(myArray) To UBound(myArray) ' Cells(i + 1, 1).Value2 = myArray(i) 'Next Dim curr() As String ReDim curr(2) curr(0) = "DKK/NOK" curr(1) = "EUR/SEK" curr(2) = "USD/CHF" For i = LBound(curr) To UBound(curr) x = FirstRow(myArray, curr(i)) - FirstRow(myArray) + 1 MsgBox "table:body:rows:" & x & ":cells:1:cell:check" Next i ie.Quit Set ie = Nothing End Sub 

对不起, vbNewLine不会削减,我的不好。 另外,检查一个命名的元素不应该那么辛苦,你是否提供了你的snipplet来检查我甚至会给它一个镜头的所有盒子。