0

我知道这对你们中的某些人来说非常简单。但是我一直在深入互联网,我找不到答案。我需要得到的公司名称是里面的VBA Excel在HTMLObject中获取文本

tbody tr td a eBay-tradera.com

td class="bS aR" 970,80

/td /tr /tbody

<tbody id="matrix1_group0"> 
<tr class="oR" onmouseover="onMouseOver(this, false)" onmouseout="onMouseOut(this, false)" onclick="onClick(this, false)"> 
<td class="bS">&nbsp;</td> 
<td> 
<a href="aProgramInfoApplyRead.action?programId=175&amp;affiliateId=2014848" title="http://www.tradera.com/" target="_blank"> 

    eBay-Tradera.com 

</a> 
</td> 
<td class="aR"> 
<a href="/pan/aProgramInfoApplyRead.action?programId=175&amp;affiliateId=2014848" title="/pan/aProgramInfoApplyRead.action?programId=175&amp;affiliateId=2014848">175</a></td> 
<td class="bS aR">0</td><td class="bS aR">0</td><td class="bS aR">187</td> 
<td class="aR">0,00%</td><td class="bS aR">124</td> 
<td class="aR">0,00%</td> 
<td class="bS aR">26</td> 
<td class="aR">20,97%</td> 
<td class="bS aR">32</td> 
<td class="aR">60,80</td> 
<td class="aR">25,81%</td> 
<td class="bS aR">5&nbsp;102,00</td> 
<td class="bS aR">0,00</td> 
<td class="aR">0,00</td> 
<td class="bS aR"> 

    970,80 

</td> 
</tr> 
</tbody> 

这是我的代码,在这里我只是试图让一个标签开始与但我不能得到那个工作要么

Set TDelements = document.getElementById("matrix1_group0").document.getElementsbytagname("a").innerHTML 
r = 0 
C = 0 

For Each TDelement In TDelements 
Blad1.Range("A1").Offset(r, C).Value = TDelement.innerText 
r = r + 1 
Next 

由于事先我知道,这可能是简单的。但我希望其他人可能会遇到同样的问题,这对他们也有帮助。 “r = r + 1”的原因是因为该列表中有更多的公司。我只是想让它尽可能简单。再次感谢!

+0

我想你不给我们的链接,因为它是一个受密码保护的部分,但你可以请快照表怎么看起来像在网络上? – 2014-11-24 22:12:19

+0

的'document'在'的document.getElementById( “matrix1_group0”)...'需要其父像'ie.document.getElementById( “matrix1_group0”)...'。 – Jeeped 2014-11-24 23:23:47

回答

2

您需要在表中指定的元素位置。易趣似乎在混淆类名,所以我们不能依赖那些一致的。我通常也不会依靠他们的表格索引中的元素是一致的,但我没有看到任何解决方法。

我假设这是你正在寻找

<tbody id="matrix1_group0"> 
    <tr class="oR" onmouseover="onMouseOver(this, false)" onmouseout="onMouseOut(this, false)" onclick="onClick(this, false)"> 
    <td class="bS">&nbsp;</td> 
    <td> 
     <a href="aProgramInfoApplyRead.action?programId=175&amp;affiliateId=2014848" title="http://www.tradera.com/" target="_blank"> 
     eBay-Tradera.com <!-- <=== You want this? --> 
     </a> 
    </td> 
    <!-- ... --> 
    </tr> 
    <!-- ... --> 
</tbody> 

我们可以忽略文档的其余部分作为表元素有一个ID的HTML文档。总之,我们假设

.getElementById("matrix1_group0").getElementsByTagName("TR") 

将返回按它们的外观排序的html行对象的集合。

Set matrix = document.getElementById("matrix1_group0") 
Set firstRow = matrix.getElementsByTagName("TR")(1) 
Set firstRowSecondCell = firstRow.getElementsByTagName("TD")(2) 
traderaName = firstRowSecondCell.innerText 

你当然可以内联把这一切看作

document.getElementById("matrix1_group0").getElementsByTagName("TR")(1).getElementsByTagName("TD")(2).innerText 

,这将使调试困难。此外,如果网页以不同的格式呈现给您,那么这将不起作用。 Ebay故意让你难以从数据中提取数据以确保安全。

+2

好吧,在阅读Cheezsteak的回答后,我只是删除我的建议你遵循他的方法。它更加灵活并且很好地解释了我之前做的事情,更好地将注意力集中在最好的答案上,而不是有两个类似的答案。 +1 – 2014-11-24 22:32:18

+0

我得到“运行时错误424,所需的对象”有没有什么我错过了要告诉你? – 2014-11-25 21:11:27

+0

@NiklasAndersson首先确认文档没有改变它的结构。否则看到这个[答案](http://stackoverflow.com/questions/25749333/internet-explorer-fill-input-box-with-text-mask-using-vba/25753120#25753120)关于等待元素加载在尝试访问它们之前。 – cheezsteak 2014-11-25 21:48:29