Använda WebBrowser-kontrollen för att öppna Office-dokument

Artikelöversättning Artikelöversättning
Artikel-id: 243058 - Visa produkter som artikeln gäller.
Visa alla | Dölj alla

På den här sidan

Sammanfattning

När du arbetar med Office-dokument kan det hända att du vill visa dokumenten direkt i Visual Basic, utan att skapa ett inbäddat OLE-objekt med kontrollen för OLE-behållare. I stället kanske du vill länka till ett befintligt dokument och öppna det som ett ActiveX-dokumentobjekt på plats. Med Microsoft WebBrowser-kontrollen kan du skapa en sådan lösning.

I den här artikeln beskrivs hur du navigerar till ett befintligt Office-dokument och visar det i Visual Basic med hjälp av WebBrowser-kontrollen.

Mer Information

ActiveX-dokument är inbäddningsbara OLE-objekt som fungerar mer som ActiveX-kontroller än som vanliga OLE-objekt. Till skillnad från vanliga inbäddade objekt är inte ActiveX-dokument utformade för att vara inbäddade objekt i större dokument. De fungerar som fullständiga dokument som visas i t.ex. Internet Explorer eller samlas i enskilda resurser med andra dokument, t.ex. Binder-dokument.

Även om Microsoft Visual Basic för närvarande inte stöder direkt inbäddning av ActiveX-dokument, kan du kringgå begränsningen genom använda funktionerna i Internet Explorer och WebBrowser-kontrollen. WebBrowser-kontrollen (Shdocvw.dll) ingår i Internet Explorer och kan endast användas på datorer med Internet Explorer.

Skapa ett Visual Basic-program som kan användas för att öppna Office-dokument

Gör så här om du vill skapa ett Visual Basic-program som kan användas för att öppna Office-dokument:
  1. Starta Visual Basic och skapa ett nytt Standard-projekt. Form1 skapas som standard.
  2. Klicka på ComponentsProject-menyn så att dialogrutan Components öppnas. I dialogrutan Components lägger du till referenser till Microsoft Common Dialog Control och Microsoft Internet Controls. Lägg till objekten i verktygslådan genom att klicka på OK.
  3. Lägg till en instans av WebBrowser-kontrollen, CommonDialog-kontrollen och en CommandButton i Form1.
  4. Lägg sedan till följande kod i Code-fönstret för Form1:
    Option Explicit
    
    Dim oDocument As Object
    
    Private Sub Command1_Click()
       Dim sFileName As String
       
     ' Sök efter en Office-fil ...
       With CommonDialog1
          .FileName = ""
          .ShowOpen
          sFileName = .FileName
       End With
       
     ' Öppna filen om användaren inte avbryter ...
       If Len(sFileName) Then
          Set oDocument = Nothing
          WebBrowser1.Navigate sFileName
       End If
    End Sub
    
    Private Sub Form_Load()
       Command1.Caption = "Browse"
       ' För Microsoft Office 2007-dokument ändrar du .Filter-parametern för
       ' With CommonDialog1-satsen till:
       ' .Filter = "Office-dokument " & _
       '      "(*.docx, *.xlsx, *.pptx)|*.docx;*.xlsx;*.pptx"
       With CommonDialog1
          .Filter = "Office-dokument " & _
          "(*.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 "Fil öppnad av: " & oDocument.Application.Name
    End Sub
    					
  5. Kör projektet genom att trycka på F5. När du klickar på Bläddra-knappen öppnas dialogrutan Öppna, där du kan navigera till en Word-, Excel- eller PowerPoint-fil. Om du väljer Öppna ska dokumentet öppnas i WebBrowser-kontrollen. Sedan visas en meddelanderuta med namnet på Office-programmet som användes för att öppna filen.

Att tänka på när du använder WebBrowser-kontrollen i Microsoft Office 2007-program

Du bör tänka på följande när du använder WebBrowser-kontrollen:
  • WebBrowser-kontrollen navigerar asynkront till dokument. Det innebär att anropet återger kontrollen till Visual Basic-programmet innan dokumentet har lästs in i sin helhet, vilket inträffar när du anropar WebBrowser1.Navigate. Om du planerar att automatisera det inbäddade dokumentet måste du använda händelsen NavigateComplete2, så att du vet när dokumentet har lästs in. Använd Document-egenskapen i WebBrowser-objektet för att få referensen till Office-dokumentobjektet. I den föregående koden är referensen inställd på oDocument.
  • Det uppstår flera kända problem när du har mer än en WebBrowser-kontroll i ett projekt och varje kontroll läses in med samma typ av Office-dokument. Detta innebär att varje kontroll innehåller alla Word-dokument eller alla Excel-kalkylblad. Vi rekommenderar att du bara använder en kontroll per projekt och att du flyttar till ett dokument i taget.
  • Rensa det aktuella innehållet från WebBrowser genom att använda följande kod för att navigera till den tomma standardsidan i Click-händelsen för en annan kommandoknapp, eller gör detta på någon annan lämplig plats i koden.
       WebBrowser1.Navigate "about:blank"
    					

Att tänka på när du använder WebBrowser-kontrollen i Microsoft Office 2003-program och tidigare versioner av Office

Du bör tänka på följande när du använder WebBrowser-kontrollen:
  • WebBrowser-kontrollen navigerar asynkront till dokument. Det innebär att om du anropar WebBrowser1.Navigate, återger anropet kontrollen till Visual Basic-programmet innan dokumentet har lästs in i sin helhet. Om du planerar att automatisera det inbäddade dokumentet måste du använda händelsen NavigateComplete2 för att veta när dokumentet har lästs in. Du kan använda egenskapen Document för WebBrowser-objektet som skickas om du vill ha en referens till Office-dokumentobjektet, vilket är angivet till oDocument i koden ovan.
  • WebBrowser-kontrollen stöder inte menykombinering. Om du vill att dokumentets menyobjekt ska visas tillsammans med Visual Basic-menyn måste du i stället använda OLE-behållarkontrollen.
  • Med WebBrowser-kontrollen döljs i allmänhet alla dockade verktygsfält innan Office-dokumentet visas. Du kan använda Automation om du vill visa ett flytande verktygsfält med hjälp av kod som den här:
       With oDocument.Application.CommandBars("Standard")
          .Position = 4 '[msoBarFloating]
          .Visible = True
       End With
    					
    Med nyare versioner av Internet Explorer (5.0 och senare) kan du även visa dockade verktygsfält med följande kod:
     ' Detta är ett växlingsalternativ, så anropa det en gång för att visa
     ' verktygsfälten och en gång för att dölja dem. Detta fungerar med Internet Explorer 5
     ' men fungerar ofta inte med tidigare versioner ...
       WebBrowser1.ExecWB OLECMDID_HIDETOOLBARS, OLECMDEXECOPT_DONTPROMPTUSER
    					
  • Det finns flera kända problem om fler än en WebBrowser-kontroll används i ett projekt, och om kontrollerna läses in med samma typ av Office-dokument (d.v.s. bara Word-dokument eller bara Excel-kalkylblad). Du bör endast använda en kontroll per projekt och navigera till ett dokument i taget.

    Det vanligaste problemet gäller Office-kommandofält, som visas inaktiverade. Om du har två WebBrowser-kontroller med inlästa Word-dokument i samma formulär, och du har valt att visa verktygsfält med någon av de föregående teknikerna, blir endast en uppsättning verktygsfält aktiv och fungerar som den ska. Den andra uppsättningen inaktiveras och kan inte användas.
  • Om du vill tömma WebBrowser-kontrollen navigerar du till den tomma standardsidan med följande kod i Click-händelsen för en annan kommandoknapp (eller på någon annan lämplig plats i koden):
       WebBrowser1.Navigate "about:blank"
    					

Referenser

Om du vill veta mer om WebBrowser-kontrollen i Visual Basic klickar du på följande artikelnummer och läser artiklarna i Microsoft Knowledge Base:
162719 Använda WebBrowser-kontrollen från Visual Basic 5.0 (Länken kan leda till en webbplats som är helt eller delvis på engelska)
188271 Skriva ut innehållet i WebBrowser-kontrollen från Visual Basic (Länken kan leda till en webbplats som är helt eller delvis på engelska)
191692 PRB: Shdocvw.dll ingår inte i PDW-installationspaketet (Länken kan leda till en webbplats som är helt eller delvis på engelska)
238313 PRB: Komma åt dokumentobjektmodellen i Internet Explorer från Visual Basic (Länken kan leda till en webbplats som är helt eller delvis på engelska)

Egenskaper

Artikel-id: 243058 - Senaste granskning: den 25 maj 2007 - Revision: 6.0
Informationen i denna artikel gäller:
  • 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
Nyckelord: 
kbexpertiseinter kbhowto KB243058

Ge feedback

 

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