单击网站上的所有复选框

Click all checkboxes on website

我有(在 Excel、VBA 中)一个将导航到此网页的子程序:

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

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

为此,我需要选中所有框(table 左侧),但框的数量不是恒定的 - 所以我无法对框名称进行硬编码。

我想一种方法是提取整个 html,确定行数,然后循环。但它似乎很不方便。当然有一些更聪明的方法,需要更少的代码和更少的存储空间?

您可以通过 vbNewLine Split() table 并在集合的每一行中搜索货币(注意 headers).
由于输入的名称类似于 table:body:rows:2:cells:1:cell:check 你可以将货币与复选框匹配。
实际上它看起来像(直到获取元素名称):

Function FirstRow(myArray() As String, Optional curr As String) As Long
If curr = "" Then
    curr = "*[A-Z][A-Z][A-Z]/[A-Z][A-Z][A-Z]*"
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这次不会剪了,我的错。此外,检查命名元素应该不会那么难,如果您提供了用于检查所有框的代码片段,我什至会试一试。