使用 vba 读取 ngx-datatable table
Reading a ngx-datatable table with vba
我正在使用 VBA 连接到一个网页,我需要迭代的数据在 ngx-datatable table 中。但是当我连接到 table 时,它不会将其识别为 IHTMLtable。如果我将元素设置为通用 IHTMLEelement 类型,它不会出错,但它会将自己标识为“objHTMLUnknownelement”,然后当我尝试循环行时,它会抛出错误。我希望像我做其他人一样做这个,从第 0 行开始,遍历单元格,捕获我需要的东西并确保它在我想要的日期范围内,然后一旦我超过日期范围就停止。我可以连接到它并像对待常规 table 一样对待它吗?如果可以,我该如何声明元素类型。谢谢。
类似这样(使用代码中的例子URL)
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
我正在使用 VBA 连接到一个网页,我需要迭代的数据在 ngx-datatable table 中。但是当我连接到 table 时,它不会将其识别为 IHTMLtable。如果我将元素设置为通用 IHTMLEelement 类型,它不会出错,但它会将自己标识为“objHTMLUnknownelement”,然后当我尝试循环行时,它会抛出错误。我希望像我做其他人一样做这个,从第 0 行开始,遍历单元格,捕获我需要的东西并确保它在我想要的日期范围内,然后一旦我超过日期范围就停止。我可以连接到它并像对待常规 table 一样对待它吗?如果可以,我该如何声明元素类型。谢谢。
类似这样(使用代码中的例子URL)
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