从vba正确访问iFrame

我想从亚马逊获得产品说明字段。

例如: http://www.amazon.com/GMC-Denali-Black-22-5-Inch-Medium/dp/B00FNVBS5C/ref=sr_1_1?s=outdoor-recreation&ie=UTF8&qid=1436768082&sr=1-1&keywords=bicycle : http://www.amazon.com/GMC-Denali-Black-22-5-Inch-Medium/dp/B00FNVBS5C/ref=sr_1_1?s=outdoor-recreation&ie=UTF8&qid=1436768082&sr=1-1&keywords=bicycle

这是我的代码:

 Sub ScrapeProductDesc() Dim Ie As New InternetExplorer Dim WebURL Dim Docx As HTMLDocument Dim productDesc Dim RcdNum Ie.Visible = False For RcdNum = 2 To ThisWorkbook.Worksheets(1).Range("A65536").End(xlUp).Row WebURL = ThisWorkbook.Worksheets(1).Range("A" & RcdNum) Ie.Navigate2 WebURL Do Until Ie.readyState = READYSTATE_COMPLETE DoEvents Loop Set Docx = Ie.document productTitle = Docx.getElementById("productTitle").innerText '####### Product Desc productDesc = Ie.document.Window.frames("product-description-iframe").contentWindow.document.getElementsByClassName("productDescriptionWrapper").innerText 'print to workbook ThisWorkbook.Worksheets(1).Range("A" & RcdNum) = productDesc Next End Sub 

由于产品描述是在IFrame中,我在做: productDesc = Ie.document.Window.frames("product-description-iframe").contentWindow.document.getElementsByClassName("productDescriptionWrapper").innerText

但是,我收到错误消息: Object does not support this property or method. 为这条线。

我想访问的iFrame是不正确的。

任何build议如何正确访问iframe?

尝试声明一个variables为MSHTML.HTMLWindow2并将其设置为等于Docx.frames(0)

 Sub ScrapeProductDesc() Dim Ie As New InternetExplorer Dim WebURL Dim Docx As HTMLDocument Dim productDesc Dim RcdNum Dim prdt As MSHTML.HTMLWindow2 Ie.Visible = False For RcdNum = 2 To ThisWorkbook.Worksheets(1).Range("A65536").End(xlUp).Row WebURL = ThisWorkbook.Worksheets(1).Range("A" & RcdNum) Ie.Navigate2 WebURL Do Until Ie.ReadyState = READYSTATE_COMPLETE DoEvents Loop Set Docx = Ie.Document Set prdt = Docx.frames(0) productTitle = prdt.Document.getElementById("productTitle").innerText '####### Product Desc productDesc = prdt.Document.getElementsByClassName("productDescriptionWrapper")(0).innerText 'print to workbook ThisWorkbook.Worksheets(1).Range("A" & RcdNum) = productDesc Next End Sub