1

我有这段代码,它应该引用公司名称的“D”列,并在 yahoo Finance 上查询股票代码。它在某些时候效果很好,其他时候我得到“选择”而不是股票代码。我不确定我做错了什么,任何帮助都将不胜感激。这是代码:

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
4

1 回答 1

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条件,直到您可以过滤任何与广告相关的结果。

希望能帮助到你。

于 2013-04-23T14:01:40.197 回答