Het besturingselement Webbrowser in Visual Basic gebruiken om een Office-document te openen

Zie 304662 voor een Microsoft Visual C# 2005- en Microsoft Visual C# . NET-versie van dit artikel.

Samenvatting

Mogelijk wilt u een Microsoft Office-document rechtstreeks in een Microsoft Visual Basic-formulier weergeven of insluiten. Microsoft Visual Basic 2005 en Visual Basic .NET bieden geen OLE-besturingselement waarmee u een Office-document in een formulier kunt insluiten. Als u een bestaand document wilt insluiten en wilt openen als een in-place ActiveX-documentobject in een Visual Basic-formulier, kunt u het webbrowserbesturingselement gebruiken.

In dit artikel wordt gedemonstreerd hoe u naar een bestaand Office-document bladert en dit in een Visual Basic-formulier weergeeft met behulp van het besturingselement Webbrowser.

Meer informatie

ActiveX-documenten zijn ingesloten OLE-objecten die zich meer gedragen als ActiveX-besturingselementen dan traditionele OLE-objecten. In tegenstelling tot een traditioneel ingesloten object is een ActiveX-document niet ontworpen als een ingesloten object in een groter document. In plaats daarvan wordt het beschouwd als een volledig document dat alleen wordt bekeken (zoals met Microsoft Internet Explorer) of wordt verzameld in één resource met andere documenten (zoals een Microsoft Office Binder-bestand). Een ActiveX-document dat wordt gehost in het besturingselement Webbrowser is altijd actief; Daarom is er, in tegenstelling tot traditionele OLE-ingesloten objecten, geen gevoel van in-place activering.

Hoewel Microsoft Visual Basic .NET en Visual Basic 2005 momenteel geen ondersteuning bieden voor het rechtstreeks hosten van ActiveX-documenten, kunt u hiervoor het besturingselement WebBrowser gebruiken. Het besturingselement WebBrowser (Shdocvw.dll) maakt deel uit van Internet Explorer en kan alleen worden gebruikt op systemen waarop Internet Explorer is geïnstalleerd.

Een Visual Basic-toepassing maken waarmee Office-documenten worden geopend

Opmerking

Wanneer u bovenstaande twee methoden gebruikt om een Visual Basic-toepassing te maken waarmee Office-documenten worden geopend, moet u de code wijzigen in Visual Studio 2005. In Visual Basic wordt standaard één formulier aan het project toegevoegd wanneer u een Windows Forms project maakt. Het formulier heeft de naam Form1. De twee bestanden die het formulier vertegenwoordigen, hebben de naam Form1.vb en Form1.designer.vb. U schrijft de code in Form1.vb. Het bestand Form1.designer.vb is de locatie waar de Windows Forms Designer de code schrijft die alle acties implementeert die u hebt uitgevoerd door besturingselementen uit de werkset te slepen en neer te zetten.

Nadat de Visual Basic-toepassing is gemaakt, drukt u op F5 om het project uit te voeren. Wanneer u op Bladeren klikt, wordt het dialoogvenster Openen weergegeven en kunt u naar een Word-, Excel- of PowerPoint-bestand bladeren. Selecteer een bestand en klik op Openen. Het document wordt geopend in het besturingselement Webbrowser en er wordt een berichtvenster weergegeven met de naam van de Office-documentserver

Methode 1

  1. Maak in Microsoft Visual Studio 2005 of in Microsoft Visual Studio .NET een Windows-toepassingsproject met behulp van Visual Basic 2005 of Visual Basic .NET. Form1 wordt standaard gemaakt.

  2. Klik in het menu Extra op ToolBox aanpassen om het dialoogvenster ToolBox aanpassen te openen. Voeg op het tabblad COM-onderdelen een verwijzing toe naar Microsoft WebBrowser. Klik op OK om het besturingselement Webbrowser toe te voegen aan de werkset Windows Forms. Het besturingselement WebBrowser wordt weergegeven met de tekstverkenner in de werkset.

    Opmerking In Visual Studio 2005 hoeft u stap 2 niet uit te voeren.

  3. Voeg met behulp van de werkset een webbrowserbesturingselement, een OpenFileDialog-besturingselement en een knopbesturingselement toe aan Form1. In deze stap voegt u de lidvariabele AxWebBrowser1, de lidvariabele OpenFileDialog1 en de lidvariabele Button1 toe aan de klasse Form1.

  4. Definieer als volgt een privélid in de klasse Form1.

    Dim oDocument as Object
    
  5. Plak de volgende code in de klasse 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
    

Methode 2

  1. Maak in Microsoft Visual Studio 2005 of in Microsoft Visual Studio .NET een Windows-toepassingsproject met behulp van Visual Basic 2005 of Visual Basic .NET. Form1 wordt standaard gemaakt.

  2. Selecteer onderdelen in het menu Project om het dialoogvenster Onderdelen te openen. Voeg in het dialoogvenster Onderdelen verwijzingen toe naar het Microsoft Common Dialog Control en de Microsoft Internet Controls. Klik op OK om de items toe te voegen aan de werkset.

  3. Voeg een exemplaar van het besturingselement WebBrowser, het besturingselement CommonDialog en een CommandButton toe aan Form1.

  4. Voeg vervolgens de volgende code toe aan het codevenster voor 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
    

Overwegingen bij het gebruik van het besturingselement Webbrowser

Houd rekening met het volgende wanneer u het besturingselement WebBrowser gebruikt:

  • Het besturingselement WebBrowser bladert asynchroon naar documenten. Wanneer u WebBrowser1.Navigate aanroept, wordt met de aanroep het besturingselement naar uw Visual Basic-toepassing geretourneerd voordat het document volledig is geladen. Als u van plan bent om het ingesloten document te automatiseren, moet u de gebeurtenis NavigateComplete2 gebruiken om een melding te ontvangen wanneer het document is geladen. Gebruik de eigenschap Document van het WebBrowser-object dat wordt doorgegeven om een verwijzing naar het Office-documentobject op te halen, dat in de voorgaande code is ingesteld op oDocument.

  • Het besturingselement WebBrowser biedt geen ondersteuning voor het samenvoegen van menu's.

  • Het besturingselement Webbrowser verbergt over het algemeen alle gekoppelde werkbalken voordat een Office-document wordt weergegeven. U kunt Automation gebruiken om een zwevende werkbalk weer te geven met behulp van code zoals de volgende.

    With oDocument.Application.CommandBars("Standard")
       .Position = 4 '[msoBarFloating]
       .Visible = True
    End With
    
    

    Met nieuwere versies van Internet Explorer (5.0 en later) kunt u ook gekoppelde werkbalken weergeven met behulp van de volgende code.

    ' 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)
    
  • Er zijn verschillende bekende problemen met het hebben van meerdere webbrowsers in een project en het laden van elk besturingselement met hetzelfde type Office-document (dat wil zeggen alle Word-documenten of alle Excel-spreadsheets). U wordt aangeraden slechts één besturingselement per project te gebruiken en naar één document tegelijk te bladeren.

    Het meest voorkomende probleem is met Office-opdrachtbalken, die als uitgeschakeld worden weergegeven. Als u twee webbrowserbesturingselementen op hetzelfde formulier hebt, die beide zijn geladen met Word-documenten en u werkbalken hebt weergegeven met behulp van een van de voorgaande technieken, is slechts één set werkbalken actief en werkt deze correct. De andere is uitgeschakeld en kan niet worden gebruikt.

  • Als u de webbrowser van de huidige inhoud wilt wissen, bladert u in de Klik-gebeurtenis van een andere opdrachtknop (of op een andere geschikte plaats in uw code) naar de standaard lege pagina met behulp van de volgende code:

       AxWebBrowser1.Navigate("about:blank")
    

Overwegingen bij het gebruik van het besturingselement Webbrowser samen met een 2007 Microsoft Office-programma

De Office-programma's van 2007 openen office-documenten standaard niet in de webbrowser. Dit gedrag is ook van invloed op het besturingselement WebBrowser. We raden u aan een aangepaste ActiveX-documentcontainer te gebruiken in plaats van het besturingselement Webbrowser wanneer u toepassingen ontwikkelt die Office 2007-documenten openen.

Voor bestaande toepassingen waarvoor achterwaartse compatibiliteit met het besturingselement WebBrowser is vereist, kunt u het register wijzigen om Internet Explorer te configureren. U kunt deze methode gebruiken om Internet Explorer te configureren voor het openen van 2007 Office-documenten in de webbrowser. Klik voor meer informatie op het volgende artikelnummer om het artikel in de Microsoft Knowledge Base weer te geven:

927009 Er wordt een nieuw venster geopend wanneer u een 2007 Microsoft Office-programmadocument probeert weer te geven in Windows Internet Explorer 7

Opmerking Als u het register wijzigt met behulp van de methode die wordt vermeld in het Knowledge Base-artikel 927009, zijn de wijzigingen van invloed op het besturingselement WebBrowser dat u in de toepassing gebruikt. De wijzigingen zijn ook van invloed op alle exemplaren van Internet Explorer. Daarnaast werkt deze methode mogelijk niet voor toekomstige versies van de Microsoft Office-suites. Daarom raden we u aan deze methode alleen te gebruiken voor compatibiliteit met een bestaande toepassing.

Verwijzingen

Voor meer informatie over het gebruik van het besturingselement Webbrowser klikt u op de volgende artikelnummers om de artikelen in de Microsoft Knowledge Base weer te geven:

304562 Visual Studio 2005 en Visual Studio .NET bieden geen OLE-containerbesturing voor Windows Forms

927009 Er wordt een nieuw venster geopend wanneer u een 2007 Microsoft Office-programmadocument probeert weer te geven in Windows Internet Explorer 7