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.