请看下面的代码。我正在用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
这就是我想要搜集的数据:
谢谢。
发布于 2015-12-03 08:46:50
我并不擅长抓取网页,但这种错误通常意味着你要找的东西并不在那里。特别是,我在您提供的屏幕截图中看不到divQuotePage
。
但是如果你想要引用(793.19),你可以这样做:
Dim V As Variant
Set V = ie.document.getelementbyid("dtaLast")
TxtRng = V.innertext
发布于 2015-12-05 00:21:05
这将会起作用。
子测试()将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
结束子对象
发布于 2018-07-01 04:27:54
您可以使用CSS选择器div.pricechangerow > span.last-change
;(可以简化为.last-change
)来确定该元素的目标。
".“类,您可以使用以下命令检索此特定项
Debug.Print ie.document.querySelector.querySelector(".last-change").innerText
这是网站在2018-06-30的当前版本
https://stackoverflow.com/questions/34055445
复制相似问题