如何获取要在excel Web浏览器中显示的网页元素 [英] How can I get an element of web page to display in excel Web Browser
本文介绍了如何获取要在excel Web浏览器中显示的网页元素的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
如何获取已确定网页的特定元素以在excel WebBrowser中显示,例如<img>
或<iframe>
或<audio>
或<a>
...等.
How can I get a specific element of a determined webpage to display it in excel WebBrowser as example like <img>
or <iframe>
or <audio>
or <a>
... etc.
我知道如何显示不属于图像的图像,如下所示.
I know how to display an image if it is not a part of webpage like the following.
WebBrowser1.Navigate "about:blank"
WebBrowser1.Document.Write "<img style=""width:100%;"" src=""http://www.sthua.edu.sg/images/vba-logo.jpg"">"
但是我不知道如何从任何网页上按ID或类名获取元素.
but I don't know how to get an element by id or class name from any webpage.
推荐答案
Here is an example showing how to retrieve class="gt-baf-table"
element from the webpage translate.google.com.eg, and put it into WebBrowser1
control on the UserForm1
:
Option Explicit
Sub Test()
Dim objIE As Object
Dim objNode As Object
Dim objTable As Object
Dim strHtmlContent As String
Dim colSSheets As Object
Dim objSSContent As Object
Dim varSSheet
Dim objWB As Object
Dim objHead As Object
Dim varCssNumber
' instantiate IE, navigate and get target DOM element
Set objIE = CreateObject("InternetExplorer.Application")
objIE.Visible = True ' for debug only
objIE.Navigate "https://translate.google.com.eg/?hl=ar&tab=wT#en/ar/boy"
Wait objIE
WaitElementById objIE, "gt-lc"
' retrieve HTML content
Set objNode = objIE.Document.GetElementById("gt-lc")
Set objTable = objNode.GetElementsByClassName("gt-baf-table")(0)
strHtmlContent = objTable.outerHTML
strHtmlContent = "<body dir=rtl>" & strHtmlContent & "</body>"
' retrieve CSS content
Set colSSheets = objIE.Document.styleSheets
Set objSSContent = CreateObject("Scripting.Dictionary")
For Each varSSheet In colSSheets
objSSContent(objSSContent.Count) = varSSheet.cssText
Next
objIE.Quit
' Init UserForm, WebBrowser
UserForm1.Show
Set objWB = UserForm1.WebBrowser1
objWB.Navigate "about:blank"
Wait objWB
' put HTML and CSS content into WebBrowser
With objWB.Document
.Write strHtmlContent
Set objHead = .GetElementsByTagName("head")(0)
For Each varCssNumber In objSSContent
objHead.appendChild .createElement("style")
.styleSheets(.styleSheets.Length - 1).cssText = objSSContent(varCssNumber)
Next
End With
End Sub
Sub Wait(objIE)
Do While objIE.ReadyState < 4 Or objIE.Busy
DoEvents
Loop
Do Until objIE.Document.ReadyState = "complete"
DoEvents
Loop
End Sub
Sub WaitElementById(objIE, strId)
Do While IsNull(objIE.Document.GetElementById(strId))
DoEvents
Loop
End Sub
UserForm1
上的结果输出如下:
以及在Chrome中呈现的相同片段:
And the same fragment rendered in Chrome:
这篇关于如何获取要在excel Web浏览器中显示的网页元素的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文