如何获取要在excel Web浏览器中显示的网页元素 [英] How can I get an element of web page to display in excel Web Browser

查看:151
本文介绍了如何获取要在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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆