1

会社名の列「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
4

1 に答える 1

1

クエリを実行している Web ページには広告が表示されます。私の推測では、これらの広告 (またはその他のランダムに表示される) の一部は、探している広告の前に要素を<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 に答える