Você está offline; aguardando reconexão

Como usar o controle WebBrowser para abrir um documento do Office

O suporte para o Office 2003 terminou

A Microsoft terminou o suporte para o Office 2003 em 8 de abril de 2014. Esta alteração afetou as suas atualizações de software e opções de segurança. Saiba o que isto significa para você e como permanecer protegido.

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 ExplicitDim oDocument As ObjectPrivate 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 IfEnd SubPrivate 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 WithEnd SubPrivate Sub Form_Unload(Cancel As Integer)   Set oDocument = NothingEnd SubPrivate Sub WebBrowser1_NavigateComplete2(ByVal pDisp As Object, _URL As Variant)   On Error Resume Next   Set oDocument = pDisp.Document   MsgBox "File opened by: " & oDocument.Application.NameEnd 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
web browser kbActiveDocs kbExcel kbVBp500 kbVBp600 kbWebBrowser kbPowerPt kbWord WD2007 XL2007
Propriedades

ID do Artigo: 243058 - Última Revisão: 03/20/2008 03:38:35 - Revisão: 6.1

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

  • kbexpertiseinter kbhowto KB243058
Comentários