将Html字符串转换为HTMLDocument VBA

时间:2013-09-02 06:58:50

标签: excel vba dom excel-vba html-parsing

我正在编写一个宏来从雅虎获取当前的汇率,但我在将HTML字符串转换为HTMLDocument时遇到问题,以便我可以按ID搜索所需的元素。这是我的代码到目前为止,但它在debug.print行上失败了。

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

我在这里缺少什么?

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

你几乎就在那里,你的身份错了:

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

Debug.Print doc.getElementById(id).innerText