none
WebBrowser 控制項開啟 Office 文件問題 RRS feed

  • 問題

  • 我要在Visual Basic 2005裡面內嵌一個Excel文件
    我參考了以下兩個網址
    http://support.microsoft.com/kb/304643/
    http://support.microsoft.com/kb/243058/
    這兩個網址都說要用WebBroswer開啟Office文件
    同時也提到WebBrowser 控制項是以非同步方式瀏覽文件。
    而呼叫會在文件載入完成前就回到 Visual Basic 應用程式的控制。
    因為我打算自動化處理控制項中包含的物件,
    那我必須使用上面兩個網頁所提供的 NavigateComplete2 事件來判斷文件何時載入完成。
    於是上面兩個文件各提供了一個範例給我參考,可是我完全不知道怎麼呼叫那兩個NavigateComplete2函式

    第一個範例裡面
    Private Sub AxWebBrowser1_NavigateComplete2(ByVal sender As Object, _
       ByVal e As AxSHDocVw.DWebBrowserEvents2_NavigateComplete2Event) _
    Handles AxWebBrowser1.NavigateComplete2
    雖然說看起來應該要自訂事件, 可是我完全不知道AxSHDocVw.DWebBrowserEvents2_NavigateComplete2Event
    是什麼東西,要怎麼去定義, 而 Handles AxWebBrowser1.NavigateComplete2 這個事件我也不知道怎麼定義

    第二個範例中Private Sub WebBrowser1_NavigateComplete2(ByVal pDisp As Object, _
    URL As Variant)
    雖然看起來只是一般的函式,但也完全不清楚呼叫的時間和傳進去的引數。

    如果有人知道的,可以麻煩寫一下呼叫的範例嗎?感謝
    2007年9月17日 上午 03:04

解答

  • HI,

     

    如果您用的是VB 2005, 您只要處理WebBrowser控制項的DocumentCompleted事件即可, 當DocumentCompleted事件處理程序被呼叫到時就是文件已經載入完成了

     

    tihs

     

    2007年9月17日 上午 04:04
  • WebBrowser 是崁入 OLE 物件,並不是真的載入 Office 物件,他只提供一個殼,亦即,你此時用工作管理員會找到一個 Excel.exe 正在執行。

     

    要操控 Excel 請直接用 CreateObject("Excel.Application")

     

    只是要類似介面可以用 OWC 。

     

    VBNET 已經不提供 OLE 崁入,詳見線上手冊:

    ms-help://MS.MSDNQTR.v80.cht/MS.MSDN.v80/MS.VisualStudio.v80.cht/dv_vbvers/html/27ba6c55-a058-4ec9-a93d-1d7311f7d566.htm

     

    Code Snippet

    Visual Basic 6.0 使用者可用的 OLE 容器控制項

     

    在 Visual Basic 6.0 中,OLE Container 控制項用來將可插入的 OLE 物件加入至表單中。Visual Basic 2005 中沒有 OLE Container 控制項。

    概念上的差異

    如果您需要 OLE Container 控制項的功能,在某些情況下,可以使用 Visual Basic 2005 WebBrowser 控制項來取代 OLE Container

    OLE Container 控制項的其中一項主要用途,便是在表單中內嵌 Word 文件或 Excel 試算表。由於 WebBrowser 控制項會封裝 Internet Explorer,因此它可以顯示這些類型的文件。此外,您可以使用 Visual Studio Tools for Office,直接從 Visual Basic 2005 與 Office 應用程式進行互動

     

     

     

    注意被我標記為紅色的字:

    只要顯示可用 WebBrowser

    你現在是要互動,所以 WebBrowser 那邊做不到。

    2007年9月19日 上午 08:01
    版主

所有回覆

  • HI,

     

    如果您用的是VB 2005, 您只要處理WebBrowser控制項的DocumentCompleted事件即可, 當DocumentCompleted事件處理程序被呼叫到時就是文件已經載入完成了

     

    tihs

     

    2007年9月17日 上午 04:04
  • 感謝您的回答,
    確實只要在documentcompleted事件被呼叫到就是已經呼叫完成了.

    但我另外有一個疑問, 希望能不吝回答.

    請問如何將先前兩個範例中宣告的物件指定為讀出來的物件呢?
    上面兩個範例都宣告了一個Dim oDocument As Object
    並且各自在oDocument = e.pDisp.Document  (英文範例)
    與Set oDocument = pDisp.Document (中文範例) 中將oDocument指定為所讀出的物件

    而在documentcompleted 中相當於pDisp這個變數的變數是什麼呢?
    我看了兩個傳入的引數sender和e都不具有document屬性
    而我的webbrowser雖然具有document屬性
    但也沒有application屬性, 似乎與範例中的物件不盡相同

    請問一下該如何取得讀出的物件呢?
    2007年9月17日 上午 06:25
  • HI,

     

    是用webbrowser的document屬性沒有錯, 因為您列的說明文件是舊的寫法, 所以不能照章全收

     

    tihs

    2007年9月18日 上午 04:06
  • 您好,

    雖然webbrowser的document屬性可以看到打開的物件,但我去看其下的屬性,似乎都是把打開的文件當做是html,而不具有Office屬性。

    因為我程式的主要目的是在我的WindowsForm裡面開啟一個內嵌的Excel文件,並且透過我的程式做自動化處理的動作。所以希望能指定一個具有 Excel屬性的變數,譬如說microsoft.Office.Interop.Excel.Workbook、 microsoft.Office.Interop.Excel.Application之類的,但我在webbrowser裡面找不到那樣的屬性或是參考。

    請問我是不是程式的方向整個錯誤了,不應該用Webbrowser開而應該要嘗試別的方法呢?如果是的話應該要往什麼方向呢?

    此外,我在程式中加入中斷點,發現在程式執行時開啟了Office文件後,webbrowser的document屬性會變成nothing,請問這是正常的嗎?還是我少做了什麼步驟呢?
    2007年9月19日 上午 01:46
  • WebBrowser 是崁入 OLE 物件,並不是真的載入 Office 物件,他只提供一個殼,亦即,你此時用工作管理員會找到一個 Excel.exe 正在執行。

     

    要操控 Excel 請直接用 CreateObject("Excel.Application")

     

    只是要類似介面可以用 OWC 。

     

    VBNET 已經不提供 OLE 崁入,詳見線上手冊:

    ms-help://MS.MSDNQTR.v80.cht/MS.MSDN.v80/MS.VisualStudio.v80.cht/dv_vbvers/html/27ba6c55-a058-4ec9-a93d-1d7311f7d566.htm

     

    Code Snippet

    Visual Basic 6.0 使用者可用的 OLE 容器控制項

     

    在 Visual Basic 6.0 中,OLE Container 控制項用來將可插入的 OLE 物件加入至表單中。Visual Basic 2005 中沒有 OLE Container 控制項。

    概念上的差異

    如果您需要 OLE Container 控制項的功能,在某些情況下,可以使用 Visual Basic 2005 WebBrowser 控制項來取代 OLE Container

    OLE Container 控制項的其中一項主要用途,便是在表單中內嵌 Word 文件或 Excel 試算表。由於 WebBrowser 控制項會封裝 Internet Explorer,因此它可以顯示這些類型的文件。此外,您可以使用 Visual Studio Tools for Office,直接從 Visual Basic 2005 與 Office 應用程式進行互動

     

     

     

    注意被我標記為紅色的字:

    只要顯示可用 WebBrowser

    你現在是要互動,所以 WebBrowser 那邊做不到。

    2007年9月19日 上午 08:01
    版主
  • 了解了,謝謝您的回答。
    2007年9月20日 上午 06:27