早上好,
我试图提取HTML表信息并整理en excel电子表格中的结果。
我使用getelementsbytagname("table")(0)
函数提取HTML表格信息,效果很好。有人可以告诉我桌子后(0)
有什么意义吗?
另外,我有一个实例,其中打开的网页没有任何要处理的表信息(在页面打开之前我不知道这一点),这导致我的代码出错,因为我尝试初始化我的数据数组到表的维度。有没有办法从getelementsbytagname("table")(0)
中提取结果,我尝试过: -
If (iDom.getelementsbytagname("table")(0) = 0) Then
但这会返回运行时错误。 非常感谢您的帮助。
答案 0 :(得分:1)
首先添加对Microsoft Internet Controls (SHDocVw)
和Microsoft HTML Object Library
的引用:
然后Object Explorer
是你的朋友:
因此getElementsByTagName
会返回IHTMLElementCollection
,其中包含属性length
。当在页面上找到具有特定标记名称的一些元素时,length
大于零。 HTH
Dim tables As IHTMLElementCollection
Set tables = doc.getElementsByTagName("table")
If tables.Length > 0 Then
Dim table As HTMLTable
Set table = tables.item(0)
' Because item is the default property of IHTMLElementCollection we can simplyfy
Set table = tables(0) ' this is the same as tables.item(0)
End If
答案 1 :(得分:0)
在VBA中,附加的(0)
引用数组的第一个元素(假设Option Base 0)。这是一个简短的例子:
vArr = Array("element 1", "element 2", "element 3")
Debug.Print v(1)
上面的代码应该返回element 2
作为从零开始的数组的第二个元素。
因此,getelementsbytagname("table")(0)
指的是该表的第一个元素。然而,如果找不到“表”,那么就没有数组可以从该表中获取并从该数组中获取第一个元素(通过附加(0)
)会产生错误。
相反,您应该测试是否实际存在该名称的表(在尝试访问该表中的元素数组之前),如下所示:
If (iDom.getelementsbytagname("table") = 0) Then