单击IE中的链接通过VBA

时间:2015-01-30 12:19:30

标签: html excel-vba vba excel

我正在尝试点击链接,但它与我制作的其他链接不同。我没有一个名为" id"什么的。

这是HTML。我需要点击" pibmunic super"按钮/链接。 FIREPATH XPath显示 .//* [@ id =' informacoes_estatisticas'] / ul / li [20] / span

<div id="informacoes_estatisticas">
<h3 class="titulo">Informações Estatísticas</h3>
<ul class="links">
<li class="item Censo Agropecuário_2006">
<li class="censo2010 super">
<li class="educa super">
<li class="empresas super">
<li class="vida super">
<li class="item Estimativa da População 2014_">
<li class="prodext2013 super">
<li class="financas super">
<li class="frota super">
<li class="item Fundações Privadas e Associações sem Fins Lucrativos no Brasil 2010_">
<li class="item Índice de Desenvolvimento Humano Municipal - IDHM_">
<li class="instfin super">
<li class="item Mapa de Pobreza e Desigualdade - Municípios Brasileiros_2003">
<li class="morbid super">
<li class="prodpec2013 super">
<li class="item Pesquisa Nacional de Saneamento Básico_2008">
<li class="item Produção Agrícola Municipal - Cereais, Leguminosas e Oleaginosas_2007">
<li class="lavperm2013 super">
<li class="lavtemp2013 super">
<li class="pibmunic super">
    <span class="super">Produto Interno Bruto dos Municípios</span>
    <ul class="pibmunic sub">
</li>
<li class="partpol super">
<li class="assismed super">
<li class="snig_censo2010 super">
</ul>
</div>

我正在尝试将代码编写为类似

的代码
Set m = html.getElementById("something")
Set a = m.getElementsByTagName("something")(something)
a.Click

我不确定这是对的,我尝试了很多组合但它不起作用。我不确切地知道&#34; getelementsby&#34;我应该使用或在内部()中给出命令。

希望你能帮助我!!感谢

1 个答案:

答案 0 :(得分:0)

您的所有课程似乎都是独一无二的。如果是这种情况,您应该将所有class属性更改为id属性,例如:

class="something"

id="something"

一旦你这样做getElementById("something")就行了。 getElementsByTagName()返回带有特定标记的元素数组。例如:

getElementsByTagName("li")

检索节点下的所有li元素。

如果最新的VBA支持querySelectorAll(),则允许您使用CSS选择器查找元素。例如:

querySelectorAll(".something")

这将找到类something的所有元素。但是,由于可以有多个具有相同类的元素,因此您将获得数组。您可以遍历这些元素来处理它们,缩小选择器,或者获取返回数组的第一个索引。

如果VBA仍然不支持querySeletorAll(),您需要将getElementsByTagName()与匹配标记上的循环结合起来,以查找具有something类的元素。例如:

For Each el in getElementById("container").getElementsByTagName("li")
    For Each cl in el.className.Split(' ')
        If cl = "something" Then
            el.onclick()
        End If
    Next 
Next

如果可能使用JavaScript或jQuery,我建议您分配ID或。他们更专注于处理这些任务(更多抽象)。 jQuery就像这样简单:

$(".something").trigger("click");