Cómo utilizar el control WebBrowser para abrir un documento de Office en Visual Basic .NET

Seleccione idioma Seleccione idioma
Id. de artículo: 304643 - Ver los productos a los que se aplica este artículo
Este artículo se publicó anteriormente con el número E304643
Para obtener una versión de este artículo para Microsoft Visual C# .NET, vea 304662.
Expandir todo | Contraer todo

En esta página

Resumen

Es posible que desee mostrar o incrustar un documento de Office directamente en un formulario de Visual Basic .NET. A diferencia de las versiones anteriores de Visual Basic, Visual Basic .NET no proporciona un control OLE que permita incrustar un documento de Office en un formulario. Si desea incrustar un documento existente y abrirlo como un objeto de documento ActiveX en contexto dentro de un formulario de Visual Basic .NET, una posible solución consiste en utilizar el control WebBrowser de Microsoft.

En este artículo se muestra cómo buscar un documento de Office existente y cómo mostrarlo dentro de un formulario de Visual Basic .NET con el control WebBrowser.

Más información

Los documentos ActiveX son objetos OLE incrustables que se comportan más como controles ActiveX que como objetos OLE tradicionales. A diferencia de un objeto tradicional incrustable, un documento ActiveX no está diseñado para ser un objeto contenido en un documento mayor. En cambio, se considera como un documento completo que simplemente se está mostrando (como ocurre con Microsoft Internet Explorer) o que está almacenado en un único recurso junto con otros documentos (como un archivo del Cuaderno de Microsoft Office). Un documento ActiveX alojado en el control WebBrowser siempre está activo; por tanto, a diferencia de los objetos OLE incrustados tradicionales, no hay necesidad de realizar la activación en contexto.

Puesto que Microsoft Visual Basic .NET no permite alojar documentos ActiveX directamente, puede utilizar el control WebBrowser para este propósito. El control WebBrowser (Shdocvw.dll) forma parte de Internet Explorer y sólo se puede utilizar en sistemas que tengan instalado este programa.

Creación de una aplicación de Visual Basic .NET que abra documentos de Office

Para crear una aplicación de Visual Basic .NET que abra documentos de Office, siga estos pasos:
  1. Cree un nuevo proyecto de aplicación para Windows en Visual Basic .NET. De manera predeterminada se creará Form1.
  2. En el menú Herramientas, haga clic en Personalizar cuadro de herramientas para abrir el cuadro de diálogo Personalizar cuadro de herramientas. En la ficha Componentes COM, agregue una referencia a Microsoft WebBrowser. Haga clic en Aceptar para agregar el control WebBrowser al cuadro de herramientas de Windows Forms. El control WebBrowser aparecerá con el texto Explorador en el cuadro de herramientas.
  3. Utilizando el cuadro de herramientas, agregue un control WebBrowser, un control OpenFileDialog y un botón a Form1. De esta forma se agregan las variables miembro AxWebBrowser1, OpenFileDialog1 y Button1 a la clase Form1.
  4. Defina un miembro privado en la clase Form1 como se indica a continuación:
    Dim oDocument as Object
  5. Pegue el código siguiente en la clase Form1:
    Private Sub Button1_Click(ByVal sender As System.Object, _
       ByVal e As System.EventArgs) Handles Button1.Click
    
        Dim strFileName As String
    
        'Find the Office document.
        With OpenFileDialog1
            .FileName = ""
            .ShowDialog()
            strFileName = .FileName
        End With
    
        'If the user does not cancel, open the document.
        If strFileName.Length Then
            oDocument = Nothing
            AxWebBrowser1.Navigate(strFileName)
        End If
    
    End Sub
    
    Private Sub Form1_Load(ByVal sender As Object, ByVal e As _
       System.EventArgs) Handles MyBase.Load
    
        Button1.Text = "Browse"
    
        With OpenFileDialog1
            .Filter = "Office Documents " & _
            "(*.doc, *.xls, *.ppt)|*.doc;*.xls;*.ppt"
            .FilterIndex = 1
        End With
    
    End Sub
    
    Private Sub Form1_Closing(ByVal sender As Object, ByVal e As _
       System.ComponentModel.CancelEventArgs) Handles MyBase.Closing
    
        oDocument = Nothing
    
    End Sub
    
    Private Sub AxWebBrowser1_NavigateComplete2(ByVal sender As Object, _
       ByVal e As AxSHDocVw.DWebBrowserEvents2_NavigateComplete2Event) _
       Handles AxWebBrowser1.NavigateComplete2
    
        On Error Resume Next
    
        oDocument = e.pDisp.Document
    
        'Note: You can use the reference to the document object to
        '      automate the document server.
        MsgBox("File opened by: " & oDocument.Application.Name)
    
    End Sub
    					
  6. Presione F5 para ejecutar el proyecto. Cuando haga clic en Examinar, aparecerá el cuadro de diálogo Abrir que le permitirá buscar un archivo de Word, Excel o PowerPoint. Seleccione cualquier archivo y haga clic en Abrir. El documento se abrirá dentro del control WebBrowser y aparecerá un cuadro de mensajes que muestra el servidor del documento de Office.

Consideraciones al utilizar el control WebBrowser

Debe tener en cuenta lo siguiente al utilizar el control WebBrowser:
  • El control WebBrowser examina los documentos de forma asincrónica. Cuando llama a WebBrowser1.Navigate, la llamada devuelve el control a la aplicación de Visual Basic antes de que el documento se haya cargado completamente. Si piensa utilizar Automatización en el documento contenido, tendrá que utilizar el evento NavigateComplete2 para que se le notifique cuándo se ha terminado de cargar el documento. Utilice la propiedad Document del objeto WebBrowser que se pasa para obtener una referencia del objeto de documento de Office, que en el código anterior está establecido como oDocument.
  • El control WebBrowser no permite la combinación de menús.
  • El control WebBrowser suele ocultar todas las barras de herramientas acopladas antes de mostrar un documento de Office. Puede utilizar Automatización para mostrar una barra de herramientas flotante con código como el que se muestra a continuación:
    With oDocument.Application.CommandBars("Standard")
       .Position = 4 '[msoBarFloating]
       .Visible = True
    End With
    					
    Las versiones más recientes de Internet Explorer (5.0 y posterior) también le permiten mostrar barras de herramientas acopladas con el código siguiente:
    ' 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...
    AxWebBrowser1.ExecWB(SHDocVw.OLECMDID.OLECMDID_HIDETOOLBARS, SHDocVw.OLECMDEXECOPT.OLECMDEXECOPT_DONTPROMPTUSER)
    					
  • Se conoce la existencia de algunos problemas derivados de tener más de un control WebBrowser en un proyecto y de tener cada control cargado con el mismo tipo de documento de Office (por ejemplo, documentos de Word u hojas de cálculo de Excel) Se recomienda utilizar sólo un control por cada proyecto y buscar sólo un documento cada vez.

    El problema más común se produce con las barras de comandos de Office, que aparecen deshabilitadas. Si tiene dos controles WebBrowser en el mismo formulario, ambos cargados con documentos de Word, y desea mostrar las barras de herramientas con una de las técnicas anteriores, sólo estará activo y funcionará correctamente un conjunto de barras de herramientas. El otro estará deshabilitado y no se podrá utilizar.
  • Para borrar el contenido actual de WebBrowser, en el evento Click de otro botón de comando (o en algún otro lugar apropiado del código), busque la página en blanco predeterminada con el siguiente código:
       AxWebBrowser1.Navigate("about:blank")
    					

Referencias

Para obtener información adicional acerca de cómo usar el control WebBrowser, haga clic en los números de artículo siguientes para verlos en Microsoft Knowledge Base:
304562 INFO: Visual Studio .NET no proporciona un control contenedor OLE para Windows Forms
243058 Cómo utilizar el control WebBrowser para abrir un documento de Office
162719 Cómo utilizar el control WebBrowser desde Visual Basic 5.0
202476 ERROR: No se puede editar un documento de Word en OLE o en un control WebBrowser
188271 Cómo imprimir el contenido del control WebBrowser desde VB
191692 PRB: Shdocvw.dll no se incluye en el paquete de instalación de PDW
238313 PRB: Acceso al modelo de objetos de documento de Internet Explorer desde Visual Basic

Propiedades

Id. de artículo: 304643 - Última revisión: lunes, 25 de septiembre de 2006 - Versión: 6.3
La información de este artículo se refiere a:
  • Microsoft Visual Basic .NET 2003 Standard Edition
  • Microsoft Visual Basic .NET 2002 Standard Edition
  • Microsoft Office Excel 2003
  • Microsoft Excel 2002 Standard Edition
  • Microsoft Excel 2000 Standard Edition
  • Microsoft Office PowerPoint 2003
  • Microsoft PowerPoint 2002 Standard Edition
  • Microsoft PowerPoint 2000 Standard Edition
  • Microsoft Office Word 2003
  • Microsoft Word 2002 Standard Edition
  • Microsoft Word 2000 Standard Edition
Palabras clave: 
kbactivedocs kbautomation kbhowto kbwebbrowser KB304643

Enviar comentarios

 

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