2016-11-08 5 views
1

特定のウェブサイトを利用してIDを検索するVBAマクロを作成する必要があります。 IDが見つかったら、テキストを取り込んでExcelにコピーする必要があります。ここでVBAでウェブサイトからテキストを取得

がWebisteのソースコードです:

<tr> 
<td style="width: 10%; color: blue" valign="top"><a name="111" id="111">111</td> 
<td><pre> 
    Some text I Need in excel 
</pre></a><td> 
</tr> 

私は "前" の間のテキストを必要

これは、VBAでの私の試みです:

Set IE = CreateObject("InternetExplorer.Application") 
IE.Visible = True 
IE.Navigate Website_URL 

Do While IE.Busy And Not IE.readyState = READYSTATE_COMPLETE 
    DoEvents 
Loop 
Set Document = IE.Document 

Dim SearchValue As String 
Set Element = Document.getElementById(SearchValue).getAttribute("pre") 

Range("I1").Select 
ActiveCell.FormulaR1C1 = Element 

私も代わりに試してみました".getAttribute"の他のメソッドを使用して、また、StringとしてElementを使用しようとしましたが、それも動作しませんでした。

誰かが私のコードで私を助けることができる場合、それは素晴らしいだろう:D

答えて

0

テキストは属性ではなくpre要素内に配置されていません。したがって、getAttribute関数は、目的のテキストを返すことができません。

最初のテキストを取得する場合は、機能querySelectorをご覧ください。この関数はIHTMLElementを返し、selectorを受け入れます。

すべてのテキストを返却したい場合は、機能querySelectorAllを試してください。この関数はIHTMLDOMChildrenCollectionを返し、selectorも受け入れます。 HTH


例:

' Add reference to Microsoft Internet Controls (SHDocVw) 
' Add reference to Microsoft HTML Object Library 

Dim selector As String 
' select element with id = SearchValue which has td which has pre 
selector = "#" & SearchValue & " td pre" 

Dim onePre As IHTMLElement 
Set onePre = doc.querySelector(selector) 
If Not onePre Is Nothing Then 
    MsgBox "First pre element text: " & onePre.innerText 
End If 

Dim allPre As IHTMLDOMChildrenCollection 
Set allPre = doc.querySelectorAll(selector) 

If allPre.Length > 0 Then 
    Dim el, text 
    For el = 0 To allPre.Length - 1 
     text = text & allPre.Item(el).innerText 
    Next 
    MsgBox "All pre elements text: " & text 
End If 

ie.Quit 
+0

これはかなり良い働いた:そのためのDのおかげで! – Wikked

+0

あなたは大歓迎です! – dee

関連する問題