用VBA读取ngx-datatable表

问题描述

我正在使用VBA连接到网页,并且需要迭代的数据在ngx-datatable表中。但是当我连接到表时,它不会将其识别为IHTMLtable。如果我将元素设置为通用IHTMLEelement类型,则不会出错,但会将其自身标识为“ objHTMLunkNownelement”,那么当我尝试循环行时会引发错误。我希望能像其他人一样做到这一点,从第0行开始,遍历单元格,捕获所需信息并确保其在所需的日期范围内,然后在超出日期范围后停止。我可以连接到此表并将其视为常规表吗?如果可以,如何声明元素类型。谢谢。

解决方法

类似的事情(在代码中使用示例网址)

Sub Tester()
    
    Dim Explorer As Object,doc,tbls,tr,tds,td,tbl,rws,rw
    Dim r As Long
    Set Explorer = GetIEByUrl("https://swimlane.github.io/ngx-datatable/*")
    
    Set doc = Explorer.document
    
    Set tbls = doc.getElementsByTagName("ngx-datatable")
    Debug.Print tbls.Length '>> 1
    Set rws = tbls(0).getElementsByTagName("datatable-body-row")
    Debug.Print rws.Length  '>> 100
    
    r = 0
    For Each rw In rws
        r = r + 1
        Debug.Print "**** Row " & r & " ****"
        Set tds = rw.getElementsByTagName("datatable-body-cell")
        For Each td In tds
            Debug.Print td.innerText
        Next td
    Next rw
  
End Sub

GetIEByURL:

'return an open IE tab given a [partial] URL
Function GetIEByUrl(URL As String) As Object
    Dim o As Object,rv As Object
    For Each o In CreateObject("Shell.Application").Windows
        If TypeName(o) = "IWebBrowser2" And o.Name <> "File Explorer" Then
            If o.document.Location Like "*" & URL & "*" Then
                Set rv = o
                Exit For
            End If
        End If
    Next o
    Set GetIEByUrl = rv
End Function

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...