如何使用 WebBrowser 控件打开 Office 文档

文章翻译 文章翻译
文章编号: 243058 - 查看本文应用于的产品
展开全部 | 关闭全部

本文内容

概要

在使用 Office 文档时,您可能希望在 Visual Basic 中直接显示这些文档,但又不想使用 OLE 容器控件创建嵌入的 OLE 对象,而是希望链接到现有的文档,并将其作为 ActiveX 文档对象就地打开。所幸的是,Microsoft WebBrowser 控件提供了一种解决方案。

本文演示如何浏览到现有 Office 文档,并使用 WebBrowser 控件在 Visual Basic 中显示该文档。

更多信息

ActiveX 文档是行为比传统 OLE 对象更像 ActiveX 控件的可嵌入的 OLE 对象。与常规嵌入对象不同的是,ActiveX 文档不是作为更大文档中所包含的对象而设计的。其本身可以算作是仅供查看器(如 Internet Explorer)查看或是与其他文档(如活页夹文件)一起集中到单个资源的完整文档。

尽管 Microsoft Visual Basic 目前不支持直接承载 ActiveX 文档,但可以使用 Internet Explorer 及其 WebBrowser 控件的功能来变通解决这一局限性。WebBrowser 控件 (Shdocvw.dll) 是 Internet Explorer 的一部分,并且只能在安装了 Internet Explorer 的系统上使用。

创建可打开 Office 文档的 Visual Basic 应用程序

请使用下列步骤创建可打开 Office 文档的 Visual Basic 应用程序:
  1. 启动 Visual Basic 并创建一个新的标准项目。默认情况下会创建 Form1。
  2. 项目菜单上,选择组件以打开组件对话框。在“组件”对话框中,添加对 Microsoft Common Dialog Control 和 Microsoft Internet Controls 的引用。单击“确定”将这些项目添加到工具箱。
  3. 将 WebBrowser 控件、CommonDialog 控件和 CommandButton 的实例添加到 Form1 中。
  4. 接着将下面的代码添加到 Form1 的“代码”窗口中:
    Option Explicit
    
    Dim oDocument As Object
    
    Private Sub Command1_Click()
       Dim sFileName As String
       
     ' Find an Office file...
       With CommonDialog1
          .FileName = ""
          .ShowOpen
          sFileName = .FileName
       End With
       
     ' If the user didn't cancel, open the file...
       If Len(sFileName) Then
          Set oDocument = Nothing
          WebBrowser1.Navigate sFileName
       End If
    End Sub
    
    Private Sub Form_Load()
       Command1.Caption = "Browse"
       With CommonDialog1
          .Filter = "Office Documents " & _
          "(*.doc, *.xls, *.ppt)|*.doc;*.xls;*.ppt"
          .FilterIndex = 1
          .Flags = cdlOFNFileMustExist Or cdlOFNHideReadOnly
       End With
    End Sub
    
    Private Sub Form_Unload(Cancel As Integer)
       Set oDocument = Nothing
    End Sub
    
    Private Sub WebBrowser1_NavigateComplete2(ByVal pDisp As Object, _
    URL As Variant)
       On Error Resume Next
       Set oDocument = pDisp.Document
    
       MsgBox "File opened by: " & oDocument.Application.Name
    End Sub
    					
  5. F5 键运行该项目。选择浏览按钮后,将出现打开对话框,您可以从中浏览到 Word、Excel 或 PowerPoint 文件。选择打开,这时文档应在 WebBrowser 控件中打开。然后会出现一个消息框,其中显示打开该文件的 Office 应用程序的名称。

使用 WebBrowser 控件时的注意事项

使用 WebBrowser 控件时应注意以下事项:
  • WebBrowser 控件不会同步浏览到文档。也就是说,在调用 WebBrowser1.Navigate 时,该调用会在文档被完全加载之前 将控件返回到 Visual Basic 应用程序。如果打算为所包含的文档实现自动操作,则需要使用 NavigateComplete2 事件在文档完成加载后发出通知。使用传入的 WebBrowser 对象的文档属性获取对 Office 文档对象的引用,该对象在前述代码中设置为 oDocument。
  • WebBrowser 控件不支持菜单合并。如果需要将文档的菜单项与 Visual Basic 菜单一起显示,则必须改用 OLE 容器控件。
  • WebBrowser 控件在显示 Office 文档之前通常会隐藏所有停靠工具栏。您可以使用“自动化”功能通过类似下面的代码来显示浮动工具栏:
       With oDocument.Application.CommandBars("Standard")
          .Position = 4 '[msoBarFloating]
          .Visible = True
       End With
    					
    较新版本的 Internet Explorer(5.0 和更高版本)还允许您使用以下代码来显示停靠工具栏:
     ' This is a toggle option, so call it once to show the 
     ' toolbars and once to hide them. This works with Internet Explorer 5
     ' but often fails to work properly with earlier versions...
       WebBrowser1.ExecWB OLECMDID_HIDETOOLBARS, OLECMDEXECOPT_DONTPROMPTUSER
    					
  • 已知在一个项目中有多个 WebBrowser 控件,并且每个控件都加载了相同类型的 Office 文档(即,全部都是 Word 文档或者全部都是 Excel 电子表格)时,会出现多种问题。建议一个项目只使用一个控件,并且一次只浏览到一个文档。

    最常见的问题发生在 Office 命令栏上(命令栏显示为禁用)。如果在同一个窗体上有两个 WebBrowser 控件,且两个控件都加载了 Word 文档,而您使用了前面某一种技术显示了工具栏,那么只有一组工具栏将是活动的,且只有该工具栏能正常工作。另一个则被禁用,且无法使用。
  • 要清除 WebBrowser 控件中的当前内容,请在另一个命令按钮的 Click 事件中(或在代码中的其他某个适当位置),使用下面的代码浏览到默认空白页:
       WebBrowser1.Navigate "about:blank"
    					

参考

有关 Visual Basic 中 WebBrowser 控件的其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
162719 如何使用 Visual Basic 5.0 中的 WebBrowser 控件
188271 如何从 VB 打印 Web 浏览器控件的内容
191692 PRB:Shdocvw.dll 未包括在 PDW 安装程序包中
238313 PRB:从 Visual Basic 访问 Internet Explorer Document Object Model

属性

文章编号: 243058 - 最后修改: 2006年3月31日 - 修订: 4.2
这篇文章中的信息适用于:
  • Microsoft Office Excel 2003
  • Microsoft Excel 2002 标准版
  • Microsoft Excel 2000 标准版
  • Microsoft Excel 97 标准版
  • Microsoft Visual Basic 6.0 专业版
  • Microsoft Visual Basic 5.0 专业版
  • Microsoft Visual Basic 6.0 企业版
  • Microsoft Visual Basic 5.0 企业版
  • Microsoft Office PowerPoint 2003
  • Microsoft PowerPoint 2002 标准版
  • Microsoft PowerPoint 2000 标准版
  • Microsoft PowerPoint 97 标准版
  • Microsoft Office Word 2003
  • Microsoft Word 2002 标准版
  • Microsoft Word 2000 标准版
  • Microsoft Word 97 标准版
关键字:?
kbhowto KB243058
Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、间接的、衍生性的损害或任何因使用而丧失所导致的之损害、数据或利润负任何责任。

提供反馈

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com