2017-03-06 224 views
1

我正在尝试编写VBA代码以从网站上拉取产品的价格。为此,我在VBA参考文献中打开了“Microsoft HTML Object Library”和“Microsoft Internet Controls”。但是,当我开始搜索附加价格的物品时,代码失败了。感谢任何人都可以提供解决方案。如何使用Excel VBA从网站中提取数据

下面是我想从中复制价格的示例网页的链接。 Link

下面是我的初始代码:

Sub Update() 

Dim IE As New InternetExplorer 
IE.Visible = False 

IE.navigate "http://www.chemistwarehouse.com.au/buy/36985/Reach-Dentotape-Waxed-20m" 
Do 
DoEvents 
Loop Until IE.readyState = READYSTATE_COMPLETE 

Dim Doc As HTMLDocument 
Set Doc = IE.document 

Dim getprice As String 

getprice = Trim(Doc.getElementsByTagName("div class="Price" itemprop="price"").innerText) 

Worksheets("Sheet1").Range(C1).Value = getprice 

End Sub 
+0

代码失败的代码行是什么? –

回答

0

功能getElementsByTagName()需要一个标记名称仅作为参数: 例如getElementsByTagName("div")

尝试getElementsByClassName()代替:

getprice = Trim(Doc.getElementsByClassName("Price").Item.innerText) 
0

有与上面的代码的几个问题。

1期

getprice = Trim(Doc.getElementsByTagName("div class="Price" itemprop="price"").innerText)

此: div class="Price" itemprop="price"不是一个标记名。标记名之类的东西输入,IMG,锚等。但是,我们可以看到价格因素,你感兴趣的Class属性我们可以通过做改变我们选择这个元素:

getprice = Trim(Doc.getElementsByClassName("Price")(0).innerText)

你在元素选择结束时可能会注意到(0)。这是为了指示Price ClassName集合正在选择哪个元素。 getElement 小号 ByClassName返回多个元件,所述第一元件是0

问题2

Worksheets("Sheet1").Range(C1).Value = getprice

我不C1任何地方引用。引用特定单元格的一种方法是使用字符串来表示范围。从您的代码变为:

Worksheets("Sheet1").Range("C1").Value = getprice

+0

辉煌。非常感谢 – Zak