Como utilizar o controlo WebBrowser para abrir um documento do Office

Traduções de Artigos Traduções de Artigos
Artigo: 243058 - Ver produtos para os quais este artigo se aplica.
Expandir tudo | Reduzir tudo

Nesta página

Sumário

Ao trabalhar com Documentos do Office pode pretender apresentá-los directamente no Visual Basic mas sem criar um objecto OLE incorporado utilizando o controlo de contentor OLE. Em vez disso, pretende ligar a um documento existente e abri-lo como um objecto de Documento ActiveX local. Felizmente, o controlo WebBrowser da Microsoft oferece uma solução.

Este artigo demonstra como navegar para um documento existente do Office e apresentá-lo no Visual Basic utilizando o controlo WebBrowser.

Este artigo poderá conter hiperligações para conteúdo em inglês (ainda não traduzido).

Mais Informação

Os Documentos ActiveX são objectos OLE incorporáveis que se comportam mais como controlos ActiveX do que objectos OLE tradicionais. Ao contrário do que acontece com um objecto incorporado normal, um Documento ActiveX não é concebido para ser um objecto incluído num documento maior. Em vez disso, é considerado um documento completo para mera visualização de um visualizador (tal como o Internet Explorer) ou que é reunido num único recurso com outros documentos (tal como um ficheiro do Arquivador).

Apesar de o Microsoft Visual Basic não suportar actualmente o alojamento directo de Documentos ActiveX, poderá contornar esta limitação utilizando as capacidades do Internet Explorer e do respectivo controlo WebBrowser. O controlo WebBrowser (Shdocvw.dll) faz parte do Internet Explorer e só pode ser utilizado em sistemas que tenham o Internet Explorer instalado.

Criar uma Aplicação do Visual Basic que Abra Documentos do Office

Utilize os seguintes passos para criar uma aplicação do Visual Basic que abra documentos do Office:
  1. Inicie o Visual Basic e crie um novo projecto Padrão. Por predefinição, é criado o Form1.
  2. A partir do menu Project, seleccione 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 controlo WebBrowser, controlo CommonDialog e um CommandButton ao Form1.
  4. Em seguida, adicione o seguinte código à janela Code para o 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. Prima F5 para executar o projecto. Quando selecciona o botão Browse , a caixa de diálogo Open é apresentada permitindo-lhe navegar para um ficheiro do Word, Excel ou PowerPoint. Seleccione Open. O documento deverá abrir dentro do controlo WebBrowser. É apresentada uma caixa de mensagens com o nome da aplicação do Office que abriu o ficheiro.

Considerações a ter durante a utilização do controlo WebBrowser nos programas do Microsoft Office de 2007

Deverá ter em consideração o seguinte quando utilizar o controlo WebBrowser:
  • O controlo WebBrowser navega de forma assíncrona para os documentos. Isto significa que a chamada devolve o controlo à aplicação do Visual Basic antes de o documento ser completamente carregado. Esta situação ocorre quando chama WebBrowser1.Navigate. Se pretender automatizar o documento incluído, utilize o evento NavigateComplete2 para saber o momento em que o documento foi carregado. Utilize a propriedade Document do objecto WebBrowser para obter a referência para o objecto de documento do Office. No código anterior, a referência está definida como oDocument.
  • Ocorrem vários problemas conhecidos quando tem mais do que um controlo WebBrowser num projecto e cada controlo é carregado com o mesmo tipo de documento do Office. Ou seja, cada controlo contém todos os documentos do Word ou todas as folhas de cálculo do Excel. Recomendamos que utilize apenas um controlo por projecto e que mude para um documento de cada vez.
  • Para limpar o conteúdo actual do WebBrowser, utilize o seguinte código para navegar para a página em branco predefinida no evento Click de outro botão de comando. Em alternativa, execute este procedimento em qualquer outro local apropriado do código.
       WebBrowser1.Navigate "about:blank"
    					

Considerações a ter durante a utilização do controlo WebBrowser nos programas do Microsoft Office 2003 e em versões anteriores do Office

Deverá ter em consideração o seguinte quando utilizar o controlo WebBrowser:
  • O controlo WebBrowser navega para documentos de forma assíncrona. Isto significa que quando chama WebBrowser1.Navigate, a chamada devolve o controlo à aplicação do Visual Basic antes de o documento ser completamente carregado. Se pretender Automatizar o documento incluído, terá de utilizar o evento NavigateComplete2 para saber o momento em que o documento foi carregado. Utilize a propriedade Document do objecto WebBrowser transmitido para obter uma referência para o objecto de documento do Office que, no código anterior, está definida como oDocument.
  • O controlo WebBrowser não suporta a intercalação de menus. Se necessitar que os itens de menu do documento sejam apresentados com o menu do Visual Basic, terá de utilizar o controlo de contentor OLE.
  • Normalmente, o controlo WebBrowser oculta quaisquer barras de ferramentas que estejam ancoradas antes de apresentar um documento do Office. Pode utilizar a Automatização para mostrar uma barra de ferramentas flutuante utilizando código como o que se segue:
       With oDocument.Application.CommandBars("Standard")
          .Position = 4 '[msoBarFloating]
          .Visible = True
       End With
    					
    As versões mais recentes do Internet Explorer (5.0 e superior) também permitem apresentar barras de ferramentas ancoradas utilizando 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 relacionados com a utilização de mais do que um controlo WebBrowser num projecto e com o facto de cada controlo ser carregado com o mesmo tipo de documento do Office (ou seja, todos os documentos do Word ou todas as folhas de cálculo do Excel). É recomendável que utilize apenas um controlo por projecto e que navegue para um documento de cada vez.

    O problema mais comum ocorre com as Barras de Comandos do Office que se encontram desactivadas. Se tiver dois controlos WebBrowser no mesmo formulário, ambos carregados com documentos do Word e tiver apresentado barras de ferramentas utilizando qualquer das técnicas referidas acima, apenas um conjunto de barras de ferramentas estará activo e a funcionar correctamente. O outro estará desactivado não podendo ser utilizado.
  • Para limpar o WebBrowser do respectivo conteúdo actual, no evento Click de outro botão de comando (ou em qualquer outro local apropriado do código), navegue para a página em branco predefinida utilizando este código:
       WebBrowser1.Navigate "about:blank"
    					

Referências

Para mais informações sobre o controlo WebBrowser no Visual Basic, clique nos números de artigo que se seguem para visualizar os artigos na Base de Dados de Conhecimento Microsoft:
162719 How to use the WebBrowser control from Visual Basic 5.0
188271 How to print contents of the Web Browser control from VB
191692 Shdocvw.dll is not included in PDW setup package
238313 Accessing the Internet Explorer Document Object Model from Visual Basic
927009 A new window opens when you try to view a 2007 Microsoft Office program document in Windows Internet Explorer 7

Propriedades

Artigo: 243058 - Última revisão: 25 de janeiro 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: 
kbhowto kbexpertiseinter 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