【问题标题】:Click all checkboxes on website点击网站上的所有复选框
【发布时间】:2015-07-08 16:27:44
【问题描述】:

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

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

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

为此,我需要检查所有框(在表的左侧),但框的数量不是恒定的 - 所以我不能硬编码框名。

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

【问题讨论】:

  • 嗯,这可能比你想要的 VBA 更狡猾 - 你有没有从网页上查看 importing data ?这是另一个可能有帮助的页面:here。如果可行,创建一个导入数据的宏可能会更容易,然后您可以恢复其他宏以解析数据并仅保留您想要的内容。

标签: excel vba checkbox click


【解决方案1】:

您可以通过vbNewLineSplit() 表格并在集合的每一行中搜索货币(注意标题)。
由于输入的名称类似于 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 这次不会删了,我的错。此外,检查一个命名元素应该不会那么难,如果你提供了检查所有框的snipplet,我什至会试一试。

【讨论】:

  • 进行了更新,它仍然是一个草图(如果找不到货币,则没有例如错误处理)但如果硬编码盒子名称是您的另一种选择,它将为您提供帮助。
  • 当然,如果您按行拆分 HTML,您也可以在同一块中搜索 input name= 字符串,以提供初步的输入名称,没有限制。
猜你喜欢
  • 2012-10-12
  • 2020-09-26
  • 2011-07-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-10
相关资源
最近更新 更多