2017-03-06 7 views
1

ウェブサイトから製品の価格を引き出すためにVBAコードを書き込もうとしています。これを行うために、VBA Referencesの「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"はTagNameのではありません。タグ名を入力のようなものです、などIMG、アンカーは、しかし、我々はあなたが興味を持っている価格要素のClass属性を見ることができる私たちがやっによって、我々は、この要素を選択する方法を変更することができます。

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

ます要素選択の最後に(0)があることがあります。これは、Price ClassNameコレクションから選択されている要素を示すためです。 getElement S ByClassName IはC1はどこにも参照していない最初の要素は0

発行2

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

され、複数の要素を返します。特定のセルを参照する1つの方法は、文字列を使用して範囲を表すことです。あなたのコードから:

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

+0

ブリリアント。どうもありがとう – Zak

関連する問題