2012-11-09 243 views
5

我正在構建一個使用從網站中提取數據的宏。目前,我可以使用元素語法(如obj.getElementsByTagName("td").innerText)輕鬆從表格內容中獲取價值。但是,當某些單元格中存在一些非innerText數據時,我遇到了麻煩。它是這樣的:從html獲取屬性字符串值

<img src="/images/amber_pending.gif" border="0" alt="Pending" title="Pending"> 

我嘗試使用語法我從別人發現提取「標題」屬性值:

For Each tbObj In doc.getElementsByClassName("report removeTdBorder") 
    i = 1 
    For Each trObj In tbObj.getElementsByTagName("tr") 
     If i >= 3 Then 
      j = 1 
      For Each tdObj In trObj.getElementsByTagName("td") 
       If j = 1 Then 
        Set imgObj = tdObj.getElementsByTagName("img") 
        dataArray(i, j) = imgObj.getAttribute("title") 
        Debug.Print imgObj.getAttribute("title") 
        ActiveCell.Offset(0, j) = dataArray(i, j) 
        ActiveCell.Offset(0, j).WrapText = False 
       Else 
        dataArray(i, j) = tdObj.innerText 
        Debug.Print i & ", " & j & ": " & dataArray(i, j) 
        ActiveCell.Offset(0, j) = dataArray(i, j) 
        ActiveCell.Offset(0, j).WrapText = False 
       End If 
       j = j + 1 
      Next tdObj 
      ActiveCell.Offset(1, 0).Activate 
     End If 
     i = i + 1 
    Next trObj 
Next tbObj 

但這一代碼進入錯誤每次和它說:「運行時間錯誤'438':對象不支持此屬性或方法「在行dataArray(i, j) = imgObj.getAttribute("title")。有人能幫助我嗎?

回答

5
Set imgObj = tdObj.getElementsByTagName("img") 

返回的圖像集合(只有一個被發現即使有),所以你可以使用解決特定的圖像(例如):

dataArray(i, j) = imgObj(0).getAttribute("title") 
+0

感謝幫助。然而,看起來這個效果並不好。它表示對於dataArray(i,j)= imgObj(1).getAttribute(「title」),「運行時錯誤'91':對象變量或塊變量未設置」。有沒有其他原因? –

+2

我認爲IXMLDOMNodeList是基於零的,所以'imgObj(0).getAttribute(「title」)'應該可以工作 – barrowc

+0

@barrowc - 很好的結果。我永遠不會記得什麼是0和什麼是1 ... –