5

I am building a macro to extract data from website using . Currently I can easily get value from table content using element syntax like obj.getElementsByTagName("td").innerText. However, when there are some non-innerText data in some cells, I am getting trouble. It's like this:

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

I attempted to extract the attribute value from "title" using syntax I found from others:

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

But this code goes error every time and it said "Run-time error '438': Object doesn't support this property or method" at the line dataArray(i, j) = imgObj.getAttribute("title"). Could some one help me?

1 Answer 1

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

returns a collection of images (even if there's only one to be found), so you can address a specific image using (eg):

dataArray(i, j) = imgObj(0).getAttribute("title")
Sign up to request clarification or add additional context in comments.

3 Comments

thanks for helping. however, it seems this one not working as well. it said "Run-time error '91': Object variable or With block variable not set" for dataArray(i, j) = imgObj(1).getAttribute("title"). is there any other reason?
I think that IXMLDOMNodeList is zero-based so imgObj(0).getAttribute("title") should work
Thanks @barrowc!! this works!! and thanks @Tim Williams for your awesome solution as well!

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.