Como usar o controle WebBrowser para abrir um documento do Office

Traduções deste artigo Traduções deste artigo
ID do artigo: 243058 - Exibir os produtos aos quais esse artigo se aplica.
Expandir tudo | Recolher tudo

Neste artigo

Sumário

Ao trabalhar com documentos do Office, você pode querer exibir esses documentos diretamente no Visual Basic, mas não deseja criar um objeto OLE incorporado usando o controle de recipiente OLE. Em vez disso, você deseja se vincular a um documento existente e abri-lo como um objeto de documentos do ActiveX no local. Felizmente, o controle Microsoft WebBrowser oferece uma solução.

Este artigo demonstra como navegar em um documento do Office existente e exibi-lo dentro do Visual Basic usando o controle WebBrowser.

Mais Informações

Os documentos ActiveX são objetos OLE incorporáveis que se comportam mais como controles ActiveX do que como objetos OLE tradicionais. Diferente de um objeto normal incorporado, um documento ActiveX não foi desenvolvido para ser um objeto contido em um documento maior. Em vez disso, ele é considerado um documento completo, que apenas está sendo exibido por um visualizador (como o Internet Explorer) ou coletado em um único recurso com outros documentos (como um arquivo Binder).

Como atualmente o Microsoft Visual Basic não suporta a hospedagem de documentos ActiveX diretamente, é possível encontrar uma solução alternativa para essa limitação usando os recursos do Internet Explorer e seu controle WebBrowser. O controle WebBrowser (Shdocvw.dll) é uma parte do Internet Explorer e pode ser usado somente em sistemas com o Internet Explorer instalado.

Criar um aplicativo do Visual Basic que abre documentos do Office

Execute as seguintes etapas para criar um aplicativo do Visual Basic que abre documentos do Office:
  1. Inicie o Visual Basic e crie um novo projeto Standard. O Form1 é criado por padrão.
  2. No menu Project, selecione Components para abrir a caixa de diálogo Components. Na caixa de diálogo Components, adicione referências ao Common Dialog Control da Microsoft e aos Internet Controls da Microsoft. Clique em OK para adicionar itens à caixa de ferramentas.
  3. Adicione uma instância do controle WebBrowser, controle CommonDialog e um CommandButton ao Form1.
  4. Em seguida, adicione o seguinte código à janela Código do 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"
       ' For the 2007 Microsoft Office documents, change the .Filter parameter of the 
       ' With CommonDialog1 statement to:
       ' .Filter = "Office Documents " & _
       '      "(*.docx, *.xlsx, *.pptx)|*.docx;*.xlsx;*.pptx"
       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. Pressione F5 para executar o projeto. Ao selecionar o botão Browse , a caixa de diálogo Open aparece permitindo que você navegue até um arquivo do Word, Excel ou PowerPoint. Escolha Open e o documento deverá ser aberto dentro do controle WebBrowser. Uma caixa de mensagem então aparece exibindo o nome do aplicativo do Office que abriu o arquivo.

O que considerar ao usar o controle WebBrowser em programas do Microsoft Office 2007

Considere o seguinte ao usar o controle WebBrowser:
  • O controle WebBrowser navega de modo assíncrono nos documentos. Isso significa que a chamada retorna o controle ao seu aplicativo do Visual Basic antes de concluir o carregamento do documento. Isso ocorre ao chamar o WebBrowser1.Navigate. Se você planeja automatizar o documento contido, use o evento NavigateComplete2 de modo que você saberá quando o documento conclui o carregamento. Use a propriedade Document do objeto WebBrowser para obter a referência ao objeto do documento do Office. No código anterior, a referência é definida como oDocument.
  • Vários problemas conhecidos ocorrem quando se tem mais de um controle WebBrowser em um projeto e cada controle é carregado com o mesmo tipo de documento do Office. Ou seja, cada controle contém todos os documentos do Word ou todas as planilhas do Excel. É recomendável o uso de apenas um controle por projeto e a transferência para um documento por vez.
  • Para limpar o conteúdo atual do WebBrowser, use o código a seguir para navegar até página em branco padrão no evento Click de outro botão de comando. Ou, faça isso em algum outro local apropriado no seu código.
       WebBrowser1.Navigate "about:blank"
    					

O que considerar ao usar o controle WebBrowser em programas do Microsoft Office 2003 e em versões anteriores do Office

Considere o seguinte ao usar o controle WebBrowser:
  • O controle WebBrowser navega de modo assíncrono nos documentos. Isso significa que ao chamar WebBrowser1.Navigate, a chamada retorna o controle ao seu aplicativo do Visual Basic antes de completar o carregamento do documento. Se você planeja automatizar o documento contido, será necessário usar o evento NavigateComplete2 para saber quando o documento conclui o carregamento. Use a propriedade Documento do objeto WebBrowser passado para obter uma referência ao objeto do documento do Office, que, no código anterior, está definido como oDocument.
  • O controle WebBrowser não oferece suporte à mesclagem de menu. Se você precisar que os itens de menu do documento apareçam com o menu do Visual Basic, será necessário usar o controle de recipiente OLE.
  • Geralmente, o controle WebBrowser oculta as barras de ferramentas encaixadas antes de exibir um documento do Office. Você pode usar a automação para exibir uma barra de ferramenta flutuante usando um código como esse:
       With oDocument.Application.CommandBars("Standard")
          .Position = 4 '[msoBarFloating]
          .Visible = True
       End With
    					
    As versões mais recentes do Internet Explorer (5.0 e posteriores) também permitem a exibição de barras de ferramentas encaixadas usando o seguinte código:
     ' 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
    					
  • Existem vários problemas conhecidos quando se tem mais de um controle WebBrowser em um projeto, e quando cada controle é carregado com o mesmo tipo de documento do Office (ou seja, todos os documentos do Word ou todas as planilhas do Excel). É recomendável que você use apenas um controle por projeto e navegue até um documento por vez.

    O problema mais comum é com as barras de comando do Office, que aparecem desabilitadas. Se você tem dois controles WebBrowser no mesmo formulário, ambos carregados com documentos do Word, e exibiu as barras de ferramentas usando uma das técnicas anteriores, somente um conjunto de barras de ferramentas estará ativo e funcionará corretamente. O outro será desabilitado e não poderá ser usado.
  • Para limpar o WebBrowser do seu conteúdo atual, no evento Click de outro botão de comando (ou em algum outro local apropriado no seu código), navegue até a página em branco padrão usando este código:
       WebBrowser1.Navigate "about:blank"
    					

Referências

Para obter informações adicionais sobre o controle WebBrowser no Visual Basic, clique nos números abaixo para ler os artigos na Base de Dados de Conhecimento Microsoft:
162719 Como usar o controle WebBrowser no Visual Basic 5.0
188271 Como imprimir conteúdo do controle Web Browser no VB
191692 Shdocvw.dll não está incluído no pacote de instalação PDW
238313 Acessar o Document Object Model do Internet Explorer no Visual Basic
927009 Uma nova janela é aberta ao tentar exibir um documento do programa do Microsoft Office 2007 no Windows Internet Explorer 7

Propriedades

ID do artigo: 243058 - Última revisão: quinta-feira, 20 de março de 2008 - Revisão: 6.1
A informação contida neste artigo aplica-se a:
  • Microsoft Office Excel 2007
  • Microsoft Office Excel 2003
  • Microsoft Excel 2002 Standard Edition
  • Microsoft Excel 2000 Standard Edition
  • Microsoft Excel 97 Standard Edition
  • Microsoft Office PowerPoint 2007
  • Microsoft Office PowerPoint 2003
  • Microsoft PowerPoint 2002 Standard Edition
  • Microsoft PowerPoint 2000 Standard Edition
  • Microsoft PowerPoint 97 Standard Edition
  • Microsoft Office Word 2007
  • Microsoft Office Word 2003
  • Microsoft Word 2002 Standard Edition
  • Microsoft Word 2000 Standard Edition
  • Microsoft Word 97 Standard Edition
  • Microsoft Visual Basic 6.0 Professional Edition
  • Microsoft Visual Basic 5.0 Professional Edition
  • Microsoft Visual Basic 6.0 Enterprise Edition
  • Microsoft Visual Basic 5.0 Enterprise Edition
Palavras-chave: 
kbexpertiseinter kbhowto KB243058

Submeter comentários

 

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