2013-04-23 2 views
1

회사 이름에 대해 열 "D"를 참조하고 주식 기호에 대해 yahoo finance에서 쿼리를 수행해야하는이 코드가 있습니다. 그것은 시간의 일부 위대한, 다른 주식 기호 대신 내가 "adchoices"얻을. 내가 뭘 잘못하고 어떤 도움을 주시면 감사하겠습니다. 다음은 코드입니다.VBA 셀 참조 웹 쿼리

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 

답변

1

쿼리하는 웹 페이지에 광고가 표시됩니다. 내 생각 엔 이러한 광고 중 일부 (또는 임의로 나타나는 <table>)는 찾고있는 것보다 먼저 <td> 요소를 사용합니다. getElementsbyTagName() 메서드는 찾은 첫 번째 결과를 반환하므로이 경우 예상 한 결과를 얻지 못합니다. 어떤 광고 관련 결과를 필터링 할 수 있습니다 때까지

Dim j As Integer 
j = 2 
Do 
    sDD = Trim(Doc.getElementsbyTagName("td")(j).innertext) 
    j = j + 1 
Loop While sDD = "adchoices" 

편집 Loop While 조건을 :

내가 좋아하는 무언가에 의해 sDD = Trim(Doc.getElementsbyTagName("td")(2).innertext)를 교체하는 것이 좋습니다.

희망이 있습니다.

+0

감사합니다. 나는 이것을 나중에 시험해보고 효과가 있는지 알려 줄 것이다. 코딩을 처음 접했을 때 여러 소스 코드에서 코드를 조합하여 코드가 비효율적이라고 생각했습니다. –