0

请看下面的代码。我正在用 excel 编制一个不寻常的货币配对列表,我希望用 VBA 刮取这些数据。我只想将值本身插入到单元格中。有谁知道我在这里哪里出错了?我收到“运行时错误 '91':对象变量或未设置块变量”。我对 VBA 比较陌生,对此我进行了很多思考。

Sub ie_open()
    Dim wb As Workbook
    Dim ws As Worksheet
    Dim TxtRng As Range
    Dim ie As Object

    Set ie = CreateObject("INTERNETEXPLORER.APPLICATION")
    ie.NAVIGATE "http://www.barchart.com/quotes/forex/British_Pound/Costa_Rican_Colon/%5EGBPCRC"
    ie.Visible = True

    While ie.ReadyState <> 4
        DoEvents
    Wend

    Set wb = ActiveWorkbook
    Set ws = wb.Sheets("Test Sheet")
    Set TxtRng = ws.Range("A1")
    TxtRng.Value = ie.document.getelementsbyname("divQuotePage").Item.innertext

End Sub

这是我试图抓取的数据:

谢谢。

4

3 回答 3

2

我在网络抓取方面没有那么熟练,但这种错误通常意味着你要找的东西不存在。特别是,我没有divQuotePage在您提供的屏幕截图中看到。

但是,如果您想要报价 (793.19),您可以执行以下操作:

Dim V As Variant
Set V = ie.document.getelementbyid("dtaLast")
TxtRng = V.innertext
于 2015-12-03T00:46:49.573 回答
0

这将起作用。

Sub Test() 将 IE 调暗为对象

Set IE = CreateObject("InternetExplorer.Application")
With IE
    .Visible = True
    .Navigate "http://www.barchart.com/quotes/forex/British_Pound/Costa_Rican_Colon/%5EGBPCRC" ' should work for any URL
    Do Until .ReadyState = 4: DoEvents: Loop

        x = .document.body.innertext
        y = InStr(1, x, "Last Price")
        Z = Mid(x, y, 19)

        Range("A1").Value = Trim(Z)

        .Quit
    End With

结束子

于 2015-12-04T16:21:05.363 回答
0

您可以使用 CSS 选择器定位该元素div.pricechangerow > span.last-change;可以简化为.last-change.

这 ”。” 表示类,您可以使用

Debug.Print ie.document.querySelector.querySelector(".last-change").innerText

那是该网站在2018-06-30的当前化身

于 2018-06-30T20:27:53.850 回答