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