2017-03-06 263 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