2012-11-09 23 views
5

Buduję makro, aby wyodrębnić dane ze strony internetowej przy użyciu . Obecnie mogę łatwo uzyskać wartość z zawartości tabeli za pomocą składni elementu, takiej jak obj.getElementsByTagName("td").innerText. Jednakże, gdy w niektórych komórkach znajdują się dane nieinternaukowe, pojawia się problem. To jest tak:Uzyskaj wartość ciągu atrybutu z html

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

próbowałem wyodrębnić wartość atrybutu z „tytułem” używając składni znalazłem z innymi:

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 

Ale ten kod idzie błąd za każdym razem, a ona powiedziała: „Run-time błąd "438": Obiekt nie obsługuje tej właściwości lub metody "w linii dataArray(i, j) = imgObj.getAttribute("title"). Czy ktoś może mi pomóc?

Odpowiedz

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

zwraca kolekcję obrazów (nawet jeśli jest tylko jeden można znaleźć), więc można rozwiązać konkretny obraz przy użyciu (np):

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

Dzięki za pomoc. wydaje się jednak, że ten nie działa również. napisano "Błąd czasu wykonania" 91 ": Zmienna obiektowa lub Z ustawioną zmienną blokową" dla dataArray (i, j) = imgObj (1) .getAttribute ("title"). czy jest jakikolwiek inny powód? –

+2

Myślę, że IXMLDOMNodeList ma wartość zero, więc 'imgObj (0) .getAttribute (" title ")' powinno działać – barrowc

+0

@barrowc - good catch. Nigdy nie pamiętam, co to jest 0- i co jest oparte na ... –

Powiązane problemy