View Single Post
 
Old 01-12-2012, 07:18 AM
tinfanide tinfanide is offline Windows 7 64bit Office 2010 32bit
Expert
 
Join Date: Aug 2011
Posts: 312
tinfanide is on a distinguished road
Default

Just fix it.
Code:
Sub WebDictQuery()

Dim x As Integer
Dim Query As String
For x = 1 To 3
   Cells(x, 3).Value = GetElementsByClassName("pronunciation", Cells(x, 1).Value)
Next x

End Sub

Function GetElementsByClassName(className, q)
''''''''''''''''''''''''''''''''''''''''
Dim IE As Object
Set IE = CreateObject("InternetExplorer.Application")
''''''''''''''''''''''''''''''''''''''''
IE.Visible = False
IE.navigate "http://hk.dictionary.yahoo.com/dictionary?p=" & q

Do Until IE.readyState = 4

Loop
    
    Dim Result
    Dim tag
    Dim tags As Object
'''''''''''''''''''''''''''''''''''''''''''''''''''
    Set tags = IE.document.getElementsByTagName("*")
'''''''''''''''''''''''''''''''''''''''''''''''''''
    Result = Array()

    For Each tag In tags
        If tag.className = className Then
            ReDim Preserve Result(UBound(Result) + 1)
            Set Result(UBound(Result)) = tag
        End If
    Next tag

    GetElementsByClassName = Result(0).getElementsByTagName("div")(0).innerText
    
IE.Quit
''''''''''''''''''''''''''''''''''''
Set IE = Nothing
''''''''''''''''''''''''''''''''''''
End Function
The key is late binding. I might have got it wrong, though. Earlier I used to use early binding for the Internet Explorer Object (don't know if I may get it right or wrong...) It reports an error in the line

Code:
Set html = IE.Document
But when it is set with late binding, nothing wrong happens.
Reply With Quote