从 HTML table 中抓取单个值并插入到带有 VBA 的 Excel 单元格中
Scraping a single value from an HTML table and inserting into an Excel cell with VBA
请看下面的代码。我正在 excel 中编制一份不寻常的货币对列表,我希望用 VBA 抓取这些数据。我只想将值本身插入到单元格中。有谁知道我哪里出错了?我收到“运行-time error '91': object variable or With block variable not set'。我是 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
这是我要抓取的数据:
谢谢。
我不太擅长网络抓取,但这种错误通常意味着您要找的东西不存在。特别是,我在您提供的屏幕截图中没有看到 divQuotePage
。
但是如果你想要报价 (793.19),你可以这样做:
Dim V As Variant
Set V = ie.document.getelementbyid("dtaLast")
TxtRng = V.innertext
这会起作用。
子测试()
将 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
结束子
您可以使用 div.pricechangerow > span.last-change
的 CSS 选择器定位该元素;
可以简化为.last-change
。
“.”表示 class 并且您可以使用
检索此特定项目
Debug.Print ie.document.querySelector.querySelector(".last-change").innerText
这是网站的当前版本 2018-06-30
请看下面的代码。我正在 excel 中编制一份不寻常的货币对列表,我希望用 VBA 抓取这些数据。我只想将值本身插入到单元格中。有谁知道我哪里出错了?我收到“运行-time error '91': object variable or With block variable not set'。我是 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
这是我要抓取的数据:
谢谢。
我不太擅长网络抓取,但这种错误通常意味着您要找的东西不存在。特别是,我在您提供的屏幕截图中没有看到 divQuotePage
。
但是如果你想要报价 (793.19),你可以这样做:
Dim V As Variant
Set V = ie.document.getelementbyid("dtaLast")
TxtRng = V.innertext
这会起作用。
子测试() 将 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
结束子
您可以使用 div.pricechangerow > span.last-change
的 CSS 选择器定位该元素;
可以简化为.last-change
。
“.”表示 class 并且您可以使用
检索此特定项目Debug.Print ie.document.querySelector.querySelector(".last-change").innerText
这是网站的当前版本 2018-06-30