Excel Vba,在带有innertext的列上循环失败

时间:2014-01-06 04:31:52

标签: excel-vba vba excel

它仍然无法循环“详细信息蓝色”类名,我想获得附加图像的数据。

Do While (.Busy Or .readystate <> 4)
DoEvents
Loop

   For Each ele In .document.all

If ele.classname = "details_title" Then
  RowCount = RowCount + 1
  sht.Range("A" & RowCount) = ele.innertext


           ElseIf ele.classname = "details blue" Then
           i = 1
           For x = 0 To ele.Length  'error at this line
           i = i + 1
           sht.Cells(RowCount, i).Value = ele.Item(x).innertext 'error at this line
           Next x


 End If
 Next ele

=

1 个答案:

答案 0 :(得分:0)

您正在将这些元素一次一个地读入ele,因此(a)不会有length属性,因为它不是集合*而是(b)您不会同时获取所有“细节蓝色”元素

我怀疑你可能想要使用getElementsByClassName方法。您可以将整个For Each ele替换为Next ele业务:

Dim detailsTitles As IHTMLElementCollection
Dim detailsBlues As IHTMLElementCollection

Set detailsTitles = document.getElementsByClassName("details_title")

' There should only be one of these
If (detailsTitles.length = 1) Then
    RowCount = RowCount + 1
    sht.Range("A" & RowCount) = detailsTitles.item(0).innerText
Else
    ' do something - e.g. report an error to the user
End If

Set detailsBlues = document.getElementsByClassName("details blue")

i = 1
For Each ele in detailsBlues
    i = i + 1
    sht.Cells(RowCount, i).Value = ele.innerText
Next ele

如果您实际上有多个“details_title”项目又有多个关联的“详细信息蓝色”项目,则需要采用不同的方法(可能会查看“details_title”项目的parentElement


*某些元素可能有一个名为length的属性,但这不是同一个东西