我需要创建一个VBA宏,它接受一个特定的网站并搜索该ID。找到ID后,我需要将文本复制到Excel中。
以下是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>
我需要“pre”之间的文字
这是我在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”其他方法,并尝试使用Element As a String但它也没有用。
如果有人可以帮助我使用我的代码,那将是非常棒的:D
答案 0 :(得分:1)
文本不在属性中,而是在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