2013-09-02 2 views
0

yahoo에서 현재 환율을 얻기위한 매크로를 작성하고 있지만 HTML 문자열을 HTMLDocument로 변환하는 데 문제가있어 필요한 요소를 ID로 검색 할 수 있습니다. 지금까지 내 코드가 있지만 debug.print 줄에서 실패합니다.HTML 문자열을 HTMLDocument VBA로 변환

Public Sub Forex(currency1 As String, currency2 As String) 

Dim oXHTTP As Object 
Dim doc As HTMLDocument 
Dim url As String 
Dim html As String 
Dim id As String 

Set oXHTTP = CreateObject("MSXML2.XMLHTTP") 

url = "http://finance.yahoo.com/q?s=" & currency1 & currency2 & "=X" 

oXHTTP.Open "GET", url, False 
oXHTTP.send 

html = oXHTTP.responseText 
Set oXHTTP = Nothing 

Set doc = New HTMLDocument 
doc.body.innerHTML = html 

id = "yfs_l10_" & currency1 & currency2 

Debug.Print doc.getElementById("id").innerText 

End Sub 

무엇이 여기에 있습니까?

답변

4

나는 excel-vba-http-request-download-data-from-yahoo-finance에서 방법을 활용하고있다 :

당신은 거의 다
Sub Forex(currency1 As String, currency2 As String) 

    Dim url As String, html As String, id As String 
    Dim oResult As Variant, oLine As Variant, sRate As String 


    url = "http://finance.yahoo.com/q?s=" & currency1 & currency2 & "=X" 
    id = "<span id=""yfs_l10_" & currency1 & currency2 & "=x"">" 
    html = GetHTTPResult(url) 

    oResult = Split(html, vbLf) 
    For Each oLine In oResult 
     If InStr(1, oLine, id, vbTextCompare) Then 
      sRate = Split(Split(oLine, "<span id=""yfs_l10_audusd=x"">")(1), "</span>")(0) 
      Exit For 
     End If 
    Next 
End Sub 

Function GetHTTPResult(sURL As String) As String 
    Dim XMLHTTP As Variant, sResult As String 

    Set XMLHTTP = CreateObject("WinHttp.WinHttpRequest.5.1") 
    XMLHTTP.Open "GET", sURL, False 
    XMLHTTP.send 
    sResult = XMLHTTP.responseText 
    Set XMLHTTP = Nothing 
    GetHTTPResult = sResult 
End Function 
+0

을 나는 할 수 없습니다 것을 조금 실망 HTML 문자열을 htmldocument로 바꾸지 만 솔루션이 완벽하게 작동합니다. 고맙습니다! – doovers

1

, 당신은 단지 ID의 잘못이 있습니다

id = "yfs_l10_" & currency1 & currency2 & "=X" 

Debug.Print doc.getElementById(id).innerText