我有这个代码,它应该引用公司名称的“D”列,并在yahoo finance上为股票代码执行查询。它在某些时候效果很好,其他人而不是股票符号我得到“adchoices”。我不确定我做错了什么,任何帮助都不仅仅是值得赞赏的。这是代码:
Sub Company2Ticker()
'Reference Microsoft internet internet controls and microsoft html library
For i = 2 To 3000
On Error Resume Next
If Len(Cells(i, 1).Value) = 0 Then Exit For
Dim IE As Object
Set IE = CreateObject("InternetExplorer.Application")
IE.Visible = False
IE.navigate "http://finance.yahoo.com/lookup?s=" & Cells(i, 4).Value
Do
DoEvents
Loop Until IE.readystate = readystate_complete
Dim Doc As HTMLDocument
Set Doc = IE.document
Dim sDD As String
sDD = Trim(Doc.getElementsbyTagName("td")(2).innertext)
Cells(i, 6) = sDD
Next i
End Sub
答案 0 :(得分:1)
您要查询的网页会显示广告。我的猜测是,其中一些广告(或任何其他随机显示的<table>
)在您要查找的广告之前使用<td>
元素。 getElementsbyTagName()
方法返回它找到的第一个结果,因此在这种情况下你不会得到你期望的结果。
我建议用以下内容替换sDD = Trim(Doc.getElementsbyTagName("td")(2).innertext)
:
Dim j As Integer
j = 2
Do
sDD = Trim(Doc.getElementsbyTagName("td")(j).innertext)
j = j + 1
Loop While sDD = "adchoices"
修改Loop While
条件,直到您可以过滤任何与广告相关的结果。
希望它有所帮助。