如何通过元素ID与Excel / VBA从外部网站获取价值?

我试图从元素ID使用VBA从外部网站检索值,并将其添加到我的Excel表。 网站的url在列A中表示。列B和C用于我检索的值。

url示例元素ID名称:“youtube-user-page-country”

Excel图片

贝娄是我可怜的尝试:

Sub getCountry() Dim IE As New InternetExplorer IE.Visible = False IE.navigate Worksheets("Sheet1").Range(A3).Value Do DoEvents Loop Until IE.readyState = READYSTATE_COMPLETE Dim Doc As HTMLDocument Set Doc = IE.document Dim getCountry As String getCountry = Trim(Doc.getElementsByTagName("youtube-user-page-country").innerText) Worksheets("Sheet1").Range(B31).Value = getCountry End Sub 

代码不能正常工作,显示对象定义的问题。 任何人都可以给我提示我要去哪里错了吗?

我一直是一个macros录像机用户,交换机有一个陡峭的学习曲线:-)

谢谢你的帮助 !

我想我得到你以后的东西。 有几个问题:

  1. 你想使用getElementByID
  2. 命名stringgetCountry和SubRoutine getCountry包含它不是一个好主意。 你可以做,但不要。
  3. 始终完全限定您的工作表参考,以便您知道您正在使用的工作簿和工作表

这里是修改后的代码,我有它的工作在我的最后。

 Sub getCountry() Dim IE As Object: Set IE = CreateObject("InternetExplorer.Application") Dim ws As Worksheet: Set ws = ThisWorkbook.Sheets("Sheet1") Dim Country As String With IE .Visible = False .navigate ws.Range("A3").Value Do DoEvents Loop Until .readyState = 4 End With Country = Trim$(IE.document.getElementByID("youtube-user-page-country").innerText) ws.Range("B31").Value2 = Country IE.Quit End Sub 

您可以使用它将数据转储到您的电子表格。

 Sub DumpData() Set IE = CreateObject("InternetExplorer.Application") IE.Visible = True URL = "http://finance.yahoo.com/q?s=sbux&ql=1" 'Wait for site to fully load IE.Navigate2 URL Do While IE.Busy = True DoEvents Loop RowCount = 1 With Sheets("Sheet1") .Cells.ClearContents RowCount = 1 For Each itm In IE.document.all .Range("A" & RowCount) = itm.tagname .Range("B" & RowCount) = itm.ID .Range("C" & RowCount) = itm.classname .Range("D" & RowCount) = Left(itm.innertext, 1024) RowCount = RowCount + 1 Next itm End With End Sub 

感谢乔尔!