2014-11-12 1 views
0

문제 :Vba- 여러 셀에 여러 인터넷 익스플로러의 웹 사이트에서 값을 검색

내가 여러 인터넷 익스플로러의 웹 사이트에서 특정 값 (이전 닫기를) 검색 할 좋아하고 여러 셀 (열 C)에 복사 할 자동으로 단일 인터넷 탐색기 웹 사이트에서 단일 셀로 값을 검색하는 방법을 알고 있습니다. 하지만 여러 웹 사이트에서 검색하여 여러 셀로 복사하는 방법을 모릅니다.

내 컴퓨터 정보 :

1.window 8.1

2.excel 2013

3.ie 11

내 엑셀 참조

마이크로 소프트 개체 라이브러리 예 :

마이크로 소프트 인터넷 컨트롤 : 예

마이크로 소프트 양식 2.0 개체 라이브러리 : 예

Microsoft 스크립트 제어 1.0 : 예

는 URL :

다음

http://finance.yahoo.com/q?s=hpq&type=2button&fr=uh3_finance_web_gs_ctrl1&uhb=uhb2

가 내 VBA 코드 :

Private Sub CommandButton1_Click() 

Dim ie As Object 
Dim Doc As HTMLDocument 
Dim prevClose As String 


Set ie = CreateObject("InternetExplorer.Application") 

    ie.Visible = 0 

    ie.navigate "http://finance.yahoo.com/q;_ylt=AsqtxVZ0vjCPfBnINCrCWlXJgfME?uhb=uhb2&fr=uh3_finance_vert_gs_ctrl1_e&type=2button&s=" & Range("b2").Value 
    Do 
    DoEvents 
    Loop Until ie.readyState = 4 



Set Doc = ie.document 


prevClose = Trim(Doc.getElementById("table1").getElementsByTagName("td")(0).innerText) 
Range("c2").Value = prevClose 


End Sub 
+0

여러 개의 탭을 사용해야합니까, 아니면 여러 개의 웹 사이트에서 가져 오는 중입니까? – cheezsteak

+0

@ptwales 여러 웹 사이트는 괜찮습니다 – pexpex223

답변

0

꼭 필요한 경우가 아니라면 여러 개의 탭을 사용하지 마십시오. 탭이 늘어남에 따라 빠르게 깨지는 확장 불가능한 솔루션입니다.

단순한 루핑 구문을 사용하여 탭 하나를 사용하고 한 번에 하나의 웹 페이지를 처리하는 것이 훨씬 간단하고 쉽습니다. 이를 위해 귀하의 URL이 제공된 것으로 가정하고 일부 열은 B 열에 포함되어 있다고 가정합니다.

Private Sub CommandButton1_Click() 
    Const YAHOO_PARTIAL_URL As String = "http://finance.yahoo.com/q;_ylt=AsqtxVZ0vjCPfBnINCrCWlXJgfME?uhb=uhb2&fr=uh3_finance_vert_gs_ctrl1_e&type=2button&s=" 

    Dim ie As Object 
    Set ie = CreateObject("InternetExplorer.Application") 
    ie.Visible = 0 

    For r = 2 To 10 ' Or whatever your row count is. 
     ie.navigate YAHOO_PARTIAL_URL & Cells(r, "B").Value 
     Do 
      DoEvents 
     Loop Until ie.readyState = 4 

     Dim Doc As HTMLDocument 
     Set Doc = ie.document 

     Dim prevClose As String 
     prevClose = Trim(Doc.getElementById("table1").getElementsByTagName("td")(0).innerText) 
     Cells(r, "C").Value = prevClose 
    Next r 

End Sub 
+0

코드를 시도했습니다. 때로는 1 행을 검색 할 수 있습니다. 때때로 2, 심지어 3 행. 그런 다음 런타임 오류 91을 표시합니다. 그런 다음 디버깅합니다. 이 코드 줄에서 발생합니다 : prevClose = Trim (Doc.getElementById ("table1"). getElementsByTagName ("td") (0) .innerText) – pexpex223

+0

즉, 코드가 액세스하려고 할 때 요소가 존재하지 않았습니다. 두 가지 가능성이 있습니다. 1) 해당 요소가 해당 웹 페이지에 존재하지 않거나 2) 코드가로드되기 전에 액세스하려고합니다. 나는 99 % 후자입니다. – cheezsteak

+0

@ pexpex223 요소를 기다리는 동안 [이 답변] (http://stackoverflow.com/questions/25749333/internet-explorer-fill-input-box-with-text-mask-using-vba/25753120#25753120)을 참조하십시오. 로드하기 전에로드하십시오. – cheezsteak