问题描述
我正在使用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