Excel VBA如何循环ClassName的子级

时间:2017-09-22 17:52:05

标签: excel vba

首先,我希望现在还没有问过这个问题。我进行了广泛的搜索,但可能错过了答案。我对VBA有点新手所以如果这是一个简单的问题,请记住这一点。

我在Excel中创建一个宏来解析HTML。

HTML示例

<div class="person">
<div class="person name"><John Doe></div>
<div class="person level-1"></div>
<div class="person level-2"></div>
<div class="person level-3 invalid"></div>
</div>
<div class="person">
<div class="person name"><Bob Smith></div>
<div class="person level-1"></div>
<div class="person level-2 invalid"></div>
<div class="person level-3 invalid"></div>
</div>

**&#34; person levelx有&#34;无效&#34;如果该人尚未达到该级别,则附加到该级别。

我想循环通过人员班级,找到最高级别的人员级别&#39;无效。所以在这个例子中,我输出了人员等级2&#39;为约翰和&#39;人级别1&#39;对于鲍勃。

到目前为止,我已尝试了许多不同的迭代,但完全被卡住了。我想代码应该是这样的:

Dim person As MSHTML.IHTMLElement
Dim persons As MSHTML.IHTMLElementCollection
set persons = document.getElementsByClassName("person")

PersonRowNum = 2
For each person in persons
    If person.getElementsByTagName("div") = "person level-2 invalid" Then
        Cells(PersonRowNum, 6) = "Person Level 1"
        PersonRowNum = PersonRowNum + 1
    Else
        If person.getattribute("classname") = "person level-3 invalid" Then
            Cells(PersonRowNum, 6) = "Person Level 2"
            PersonRowNum = PersonRowNum + 1
        Else
            Cells(PersonRowNum, 6) = "Person Level 3"
            PersonRowNum = PersonRowNum + 1
        End If
    End If
next person

我的猜测是有一些指令可以转到集合中的下一个元素,但我无法让它工作。

提前致谢!

0 个答案:

没有答案