2016-05-14 31 views
1

我怎樣才能得到一個確定網頁的特定元素在Excel web瀏覽器來顯示它作爲例如像<img>或或<audio><a> ...等。我怎樣才能得到網頁的元素在Excel Web瀏覽器中顯示

我知道如何顯示圖像,如果它不是像下面的網頁的一部分。

WebBrowser1.Navigate "about:blank" 
WebBrowser1.Document.Write "<img style=""width:100%;"" src=""http://www.sthua.edu.sg/images/vba-logo.jpg"">" 

但我不知道如何從任何網頁獲取id或class name的元素。

+0

請提供您想要顯示的特定網頁網址和元素的示例。 – omegastripes

+0

OK @omegastrips thereink [translate.google](https://translate.google.com.eg/?hl=ar&tab=wT#en/ar/boy),並有一個元素'class =「gt-baf 「表」 –

回答

0

這裏是示出如何從the webpage translate.google.com.eg檢索class="gt-baf-table"元件,並把它放入WebBrowser1控制上的示例的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產生的輸出如下所示:

UserForm1

以及Chrome中呈現的相同片段:

Chrome

+0

這真的很漂亮的工作非常感謝你。 –

相關問題