Bruke WebBrowser-kontrollen til å åpne et Office-dokument

Artikkeloversettelser Artikkeloversettelser
Artikkel-ID: 243058 - Vis produkter som denne artikkelen gjelder for.
Vis alt | Skjul alt

På denne siden

Sammendrag

Når du arbeider med Office-dokumenter, kan det hende du vil vise disse dokumentene direkte i Visual Basic, men ikke vil opprette et innebygd OLE-objekt ved hjelp av OLE-beholderkontroll. I stedet vil du kanskje koble til et eksisterende dokument, og åpne det som et erstatningsobjekt for ActiveX-dokument. Heldigvis finnes det en løsning i WebBrowser-kontrollen i Microsoft.

Denne artikkelen viser hvordan du navigerer til et eksisterende Office-dokument, og viser det i Visual Basic ved hjelp av WebBrowser-kontrollen.

Mer informasjon

ActiveX-dokumenter er OLE-objekter som kan innebygges, og som oppfører seg mer som ActiveX-kontroller enn som vanlige OLE-objekter. I motsetning til et vanlig innebygd objekt, er ikke et ActiveX-dokument utformet til å være et beholderobjekt i et større dokument. I stedet regnes det som et fullstendig dokument i seg selv som bare vises av et visningsprogram (for eksempel Internet Explorer), eller det samles til en enkelt ressurs med andre dokumenter (for eksempel en Dokumentordner-fil).

Microsoft Visual Basic støtter for tiden ikke ActiveX-dokumenter som er verter, direkte, men du kan løse dette problemet ved å bruke funksjonene i Internet Explorer og WebBrowser-kontrollen. WebBrowser-kontrollen (Shdocvw.dll) er en del av Internet Explorer, og kan bare brukes på systemer der Internet Explorer er installert.

Opprette et Visual Basic-program som åpner Office-dokumenter

Bruk følgende fremgangsmåte til å opprette et Visual Basic-program som åpner Office-dokumenter:
  1. Start Visual Basic og opprett et nytt standardprosjekt. Form1 opprettes som standard.
  2. Velg ComponentsProject-menyen til å åpne dialogboksen Components. I dialogboksen Components legger du til referanser til Microsofts Common Dialog Control og Microsofts Internet Controls. Klikk OK for å legge til elementene i verktøykassen.
  3. Legg til en forekomst av WebBrowser-kontrollen, CommonDialog-kontrollen og en CommandButton i Form1.
  4. Deretter legger du til følgende kode i Code-vinduet for 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. Trykk F5 for å kjøre prosjektet. Når du velger Bla gjennom-knappen, vises dialogboksen Åpne, der du kan navigere til en fil i Word, Excel eller PowerPoint. Velg Åpne, og dokumentet skal åpnes i WebBrowser-kontrollen. Det kommer frem en meldingsboks som viser navnet på Office-programmet som åpnet filen.

Hva du bør vurdere når du bruker WebBrowser-kontrollen i 2007 Microsoft Office-programmene

Du bør vurdere følgende når du bruker WebBrowser-kontrollen:
  • WebBrowser-kontrollen navigerer til dokumenter asynkront. Dette betyr at kallet returnerer kontrollen til Visual Basic-programmet før dokumentet er fullstendig lastet. Dette skjer når du kaller WebBrowser1.Navigate. Hvis du planlegger å automatisere beholderdokumentet, bruker du hendelsen NavigateComplete2 til å få vite når dokumentet er ferdig lastet. Bruk Document-egenskapen for WebBrowser-objektet til å få referansen til Office-dokumentobjektet. I den foregående koden er referansen satt til oDocument.
  • Flere kjente problemer oppstår når du har flere WebBrowser-kontroller i et prosjekt, og hver kontroll er lastet med samme type Office-dokument. Det vil si at hver kontroll inneholder alle Word-dokumenter eller alle Excel-regneark. Vi anbefaler at du bruker bare én kontroll per prosjekt, og at du flytter til ett dokument om gangen.
  • Hvis du vil tømme gjeldende innhold i WebBrowser-kontrollen, navigerer du til den standard blanke siden ved hjelp av følgende kode i Click-hendelsen til en annen kommandoknapp. Du kan også gjøre dette et annet passende sted i koden.
       WebBrowser1.Navigate "about:blank"
    					

Hva du bør vurdere når du bruker WebBrowser-kontrollen i Microsoft Office 2003-programmene og i tidligere versjoner av Office

Du bør vurdere følgende når du bruker WebBrowser-kontrollen:
  • WebBrowser-kontrollen navigerer til dokumenter asynkront. Dette betyr at når du kaller WebBrowser1.Navigate, returnerer kallet kontrollen til Visual Basic-programmet før dokumentet er fullstendig lastet. Hvis du planlegger å automatisere beholderdokumentet, må du bruke hendelsen NavigateComplete2 for å vite når innlastingen av dokumentet er fullført. Bruk Document-egenskapen i WebBrowser-objektet som er sendt for å få en referanse til Office-dokumentobjektet, som i foregående kode er satt til oDocument.
  • WebBrowser-kontrollen støtter ikke menyfletting. Hvis du krever at dokumentets menyelementer skal vises på Visual Basic-menyen, må du i stedet bruke OLE-beholderkontrollen.
  • WebBrowser-kontrollen skjuler vanligvis eventuelle forankrede verktøylinjer før et Office-dokument vises. Du kan bruke Automation til å vise en flytende verktøylinje ved hjelp av følgende kode:
       With oDocument.Application.CommandBars("Standard")
          .Position = 4 '[msoBarFloating]
          .Visible = True
       End With
    					
    I nyere versjoner av Internet Explorer (5.0 og senere) kan du også vise forankrede verktøylinjer ved hjelp av følgende kode:
     ' 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
    					
  • Det finnes flere kjente problemer ved å ha mer enn én WebBrowser-kontroll i et prosjekt, og å ha hver kontroll lastet med samme type Office-dokument (det vil si alle Word-dokumenter eller alle Excel-regneark). Det anbefales at du bare bruker én kontroll per prosjekt, og navigerer til ett dokument om gangen.

    Det vanligste problemet er med Office-kommandolinjer, som vises deaktivert. Hvis du har to WebBrowser-kontroller på samme skjema og begge er lastet med Word-dokumenter, og du har vist verktøylinjer med én av de forrige metodene, vil bare ett sett av verktøylinjene være aktive og fungere på riktig måte. Den andre vil bli deaktivert, og kan ikke brukes.
  • Hvis du vil tømme gjeldende innhold i WebBrowser-kontrollen, navigerer du til den standard blanke siden ved hjelp av følgende kode i Click-hendelsen til en annen kommandoknapp (eller et annet passende sted i koden):
       WebBrowser1.Navigate "about:blank"
    					

Referanser

Hvis du vil ha mer informasjon om WebBrowser-kontrollen i Visual Basic, klikker du artikkelnumrene nedenfor for å vise artiklene i Microsoft Knowledge Base:
162719 Slik bruker du WebBrowser-kontrollen fra Visual Basic 5.0 (denne artikkelen kan være på engelsk)
188271 Slik skriver du ut innhold i WebBrowser-kontrollen fra VB (denne artikkelen kan være på engelsk)
191692 PRB: Shdocvw.dll er ikke inkludert i PDW-installasjonspakken (denne artikkelen kan være på engelsk)
238313 PRB: Få tilgang til Internet Explorer-dokumentobjektmodellen fra Visual Basic (denne artikkelen kan være på engelsk)

Egenskaper

Artikkel-ID: 243058 - Forrige gjennomgang: 22. mai 2007 - Gjennomgang: 6.0
Informasjonen i denne artikkelen gjelder:
  • 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
Nøkkelord: 
kbhowto kbexpertiseinter KB243058

Gi tilbakemelding

 

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