Использование элемента управления WebBrowser для открытия документа Office

Переводы статьи Переводы статьи
Код статьи: 243058 - Vizualiza?i produsele pentru care se aplic? acest articol.
Развернуть все | Свернуть все

В этой статье

Аннотация

При работе с документами Office может возникнуть необходимость вывести их содержимое непосредственно в VisualBasic, не создавая при этом внедренный объект OLE с помощью элемента управления OLE-контейнера. Вместо этого можно создать ссылку на существующий документ и открывать его как встроенный объект документа ActiveX. Сделать это позволяет компонент Microsoft WebBrowser.

В статье рассказывается, как перейти к существующему документу Office и вывести его на экран средствами VisualBasic с помощью элемента управления WebBrowser.

Дополнительная информация

Документы ActiveX - это внедряемые объекты OLE, поведение которых больше похоже на поведение объектов ActiveX, чем обыкновенных объектов OLE. В отличие от обычного внедренного объекта документ ActiveX не рассчитан на использование в качестве элемента, являющегося частью более крупного документа. Вместо этого он рассматривается как полноценный документ, просматриваемый с помощью средств просмотра (например, Internet Explorer) или объединяемый в единый с другими документами ресурс (такой как файл подшивки).

Хотя Microsoft Visual Basic в настоящий момент не поддерживает непосредственное встраивание документов ActiveX, это ограничение можно обойти средствами Internet Explorer и его элемента управления WebBrowser. Элемент управления WebBrowser (Shdocw.dll) является составной частью Internet Explorer и может использоваться только на тех системах, на которых установлен обозреватель Internet Explorer.

Создание приложения Visual Basic, открывающего документы Office

Для создания приложения Visual Basic, открывающего документы Office, воспользуйтесь описанной ниже процедурой.
  1. Запустите Visual Basic и создайте новый проект Standard. По умолчанию будет создана форма Form1.
  2. В меню Проект выберите пункт Компоненты, чтобы открыть диалоговое окно Компоненты. В диалоговом окне "Компоненты" создайте ссылки на элементы управления Microsoft Common Dialog Control и Microsoft Internet Controls. Нажмите кнопку "OK", чтобы добавить элементы в область элементов.
  3. Добавьте в форму Form1 экземпляры компонентов WebBrowser, CommonDialog и CommandButton.
  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 = "Обзор"
       ' 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. Для запуска проекта нажмите клавишу F5. При нажатии кнопки Обзор появляется диалоговое окно Открыть, позволяющее перейти к файлу Word, Excel или PowerPoint. Нажмите кнопку Открыть, в результате документ откроется внутри компонента WebBrowser. После этого появится окно с сообщением, говорящим, с помощью какого приложения из пакета Office файл был открыт.

Что необходимо учесть при использовании элемента управления WebBrowser в программах пакета Microsoft Office 2007

При использовании компонента WebBrowser следует учитывать перечисленные ниже факторы.
  • Загрузка документов с помощью элемента управления WebBrowser происходит асинхронно. Это означает, что управление возвращается приложению Visual Basic до полной загрузки документа. Это происходит при вызове метода WebBrowser1.Navigate. Если необходимо автоматизировать работу с встроенным документом, используйте событие NavigateComplete2, срабатывающее при полной загрузке документа. Чтобы получить ссылку на объект документа Office, используйте свойство Document объекта WebBrowser. В приведенном выше фрагменте кода создается ссылка на oDocument.
  • Существует ряд известных проблем, связанных с наличием в проекте более чем одного компонента WebBrowser, в каждый из которых загружен документ Office одного и того же типа (например, во все компоненты загружены только документы Word или электронные таблицы Excel). Рекомендуется использовать по одному компоненту на каждый проект и загружать в каждый момент времени по одному документу.
  • Чтобы очистить содержимое компонента WebBrowser, используйте приведенный ниже код, позволяющий загрузить пустую страницу по умолчанию по событию Click еще одной кнопки. Вставить его можно и в любое другое подходящее место программы..
       WebBrowser1.Navigate "about:blank"
    					

Что следует учесть при использовании элемента управления WebBrowser в приложениях пакета Microsoft Office 2003 или более ранних версий Office

При использовании компонента WebBrowser следует учитывать перечисленные ниже факторы.
  • Загрузка документов с помощью элемента управления WebBrowser происходит асинхронно. Это означает, что при вызове метода WebBrowser1.Navigate управление возвращается приложению Visual Basic до полной загрузки документа. Если необходимо автоматизировать работу со встроенным документом, используйте событие NavigateComplete2, срабатывающее при полной загрузке документа. Чтобы получить ссылку на объект документа Office, которая в вышеприведенном фрагменте кода устанавливается на oDocument, используйте передаваемое свойство Document объекта WebBrowser.
  • Элемент управления 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"
    					

Ссылки

Дополнительные сведения об элементе управления WebBrowser в Visual Basic см. в следующих статьях базы знаний Майкрософт:
162719 Использование элемента управления WebBrowser из Visual Basic 5.0 (Эта ссылка может указывать на содержимое полностью или частично на английском языке)
188271 Печать содержимого элемента управления Web Browser из VB (Эта ссылка может указывать на содержимое полностью или частично на английском языке)
191692 Файл Shdocvw.dll не включается в пакет установки мастера установки и развертывания (Эта ссылка может указывать на содержимое полностью или частично на английском языке)
238313 Доступ к объекту документа Internet Explorer из Visual Basic (Эта ссылка может указывать на содержимое полностью или частично на английском языке)
927009 При попытке просмотра документа программы выпуска 2007 системы Microsoft Office в обозревателе Windows Internet Explorer 7 открывается новое окно (Эта ссылка может указывать на содержимое полностью или частично на английском языке)

Свойства

Код статьи: 243058 - Последний отзыв: 20 марта 2008 г. - Revision: 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

Отправить отзыв

 

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