Office-asiakirjan avaaminen WebBrowser-ohjausobjektin avulla

Artikkeleiden käännökset Artikkeleiden käännökset
Artikkelin tunnus: 243058 - Näytä tuotteet, joita tämä artikkeli koskee.
Laajenna kaikki | Kutista kaikki

Tällä sivulla

Yhteenveto

Kun työskentelet Office-asiakirjojen parissa, saatat haluta näyttää asiakirjat suoraan Visual Basic -sovelluksessa, mutta et halua luoda upotettua OLE-objektia OLE-säilöohjausobjektin avulla. Sen sijaan haluat linkittää aiemmin luotuun asiakirjaan ja avata sen sijainnistaan ActiveX-asiakirjaobjektin avulla. Microsoftin WebBrowser-ohjausobjekti tarjoaa tähän ratkaisun.

Tässä artikkelissa esitellään, miten aiemmin luotuun Office-asiakirjaan siirrytään ja miten se näytetään Visual Basic -sovelluksen sisällä WebBrowser-ohjausobjektin avulla.

Enemmän tietoa

ActiveX-asiakirjat ovat upotettavia OLE-objekteja, jotka toimivat enemmän ActiveX-komponenttien kuin perinteisten OLE-objektien tavoin. Toisin kuin tavallista upotettua objektia, ActiveX-asiakirjaa ei ole suunniteltu suuremmassa asiakirjassa olevaksi objektiksi. Sen sijaan sitä pidetään kokonaisena asiakirjana, jota tarkastellaan katseluohjelman (kuten Internet Explorerin) avulla tai joka kerätään yksittäiseksi resurssiksi muiden asiakirjojen kanssa (kuten nidetiedosto).

Vaikka Microsoft Visual Basic ei tällä hetkellä tue ActiveX-asiakirjojen suoraa isännöintiä, voit kiertää tämän rajoituksen Internet Explorerin ja sen WebBrowser-ohjausobjektin ominaisuuksien avulla. WebBrowser-ohjausobjekti (Shdocvw.dll) on osa Internet Exploreria ja sitä voidaan käyttää vain järjestelmissä, joissa on Internet Explorer asennettuna.

Office-asiakirjoja avaavan Visual Basic -sovelluksen luominen

Seuraavien vaiheiden avulla voit luoda Office-asiakirjoja avaavan Visual Basic -sovelluksen:
  1. Käynnistä Visual Basic ja luo uusi Standard-projekti. Form1 luodaan oletusarvon mukaan.
  2. Avaa Components-valintaikkuna valitsemalla Project-valikosta Components. Lisää Components-valintaikkunassa Microsoft Common Dialog Control- ja Microsoft Internet Controls -viittaukset. Lisää kohteet objekteihin valitsemalla OK.
  3. Lisää Form1-projektiin WebBrowser- ja CommonDialog-ohjausobjektin sekä CommandButton-painikkeen esiintymä.
  4. Lisää sitten seuraava koodi Form1-projektin Code-ikkunaan:
    Option Explicit
    
    Dim oDocument As Object
    
    Private Sub Command1_Click()
       Dim sFileName As String
       
     ' Etsi Office-tiedosto...
       With CommonDialog1
          .FileName = ""
          .ShowOpen
          sFileName = .FileName
       End With
       
     ' Jos käyttäjä ei peruuttanut, avaa tiedosto...
       If Len(sFileName) Then
          Set oDocument = Nothing
          WebBrowser1.Navigate sFileName
       End If
    End Sub
    
    Private Sub Form_Load()
       Command1.Caption = "Selaa"
       With CommonDialog1
          .Filter = "Office-asiakirjat " & _
          "(*.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 "Tiedoston avasi: " & oDocument.Application.Name
    End Sub
    					
  5. Suorita projekti painamalla F5-näppäintä. Kun napsautat Selaa-painiketta, Avaa-valintaikkuna tulee näyttöön. Tässä valintaikkunassa voit siirtyä Word-, Excel- tai PowerPoint-tiedostoon. Valitse Avaa, minkä jälkeen asiakirjan pitäisi avautua WebBrowser-ohjausobjektin sisällä. Tämän jälkeen näyttöön tulee sanomaruutu, jossa näkyy tiedoston avanneen Office-sovelluksen nimi.

WebBrowser-ohjausobjektin käyttämisen lisähuomautuksia

Ota seuraavat asiat huomioon, kun käytät WebBrowser-ohjausobjektia:
  • WebBrowser-ohjausobjekti siirtyy asiakirjoihin asynkronisesti. Tämä tarkoittaa sitä, että kun teet WebBrowser1.Navigate-kutsun, kutsu palauttaa hallinnan Visual Basic -sovellukseesi ennen kuin asiakirja on ladattu kokonaan. Jos aiot automatisoida sisälletyn asiakirjan, sinun on käytettävä NavigateComplete2-tapahtumaa selvittääksesi, milloin asiakirjan lataaminen on valmis. Hae Office-asiakirjaobjektin viittaus välitetyn WebBrowser-objektin Document-ominaisuuden avulla. Aiemmassa koodiesimerkissä asiakirjaobjektiksi on määritetty oDocument.
  • WebBrowser-ohjausobjekti ei tue valikkoyhdistämistä. Jos haluat asiakirjan valikkokohteiden näkyvän Visual Basic -valikon kanssa, sinun on käytettävä sen sijaan OLE-säilöohjausobjektia.
  • WebBrowser-ohjausobjekti piilottaa yleensä kaikki kiinnitetyt työkalurivit ennen Office-asiakirjan näyttämistä. Automaation avulla voit tuoda irrallisen työkalurivin näyttöön käyttämällä esimerkiksi seuraavanlaista koodia:
       With oDocument.Application.CommandBars("Standard")
          .Position = 4 '[msoBarFloating]
          .Visible = True
       End With
    					
    Uudemmat Internet Explorerin versiot (5.0 ja uudemmat) antavat myös näyttää kiinnitetyt työkalurivit seuraavan koodin avulla:
     ' Tämä on vaihtoasetus, joten kutsu sitä kerran näyttääksesi
     ' työkalurivit ja kerran piilottaaksesi ne. Tämä toimii Internet Explorer 5:n kanssa,
     ' mutta ei usein toimi aiempien versioiden kanssa oikein...
       WebBrowser1.ExecWB OLECMDID_HIDETOOLBARS, OLECMDEXECOPT_DONTPROMPTUSER
    					
  • Jos projektissa on useita WebBrowser-ohjausobjekteja ja kukin ohjausobjekti lataa saman Office-asiakirjatyypin (esimerkiksi kaikki lataavat Word-asiakirjoja tai Excel-laskentataulukoita), ilmenee joitakin tunnettuja ongelmia. Suositellaan, että käytät vain yhtä ohjausobjektia projektia kohti ja siirryt yhteen asiakirjaan kerrallaan.

    Yleisin ongelma on se, että Office-työkalurivit vaikuttavat poistetuilta käytöstä. Jos samassa lomakkeessa on kaksi WebBrowser-ohjausobjektia, jotka molemmat lataavat Word-asiakirjan, ja olet tuonut työkalurivit näyttöön käyttämällä jotakin edellä kuvatuista tavoista, vain yksi työkalurivijoukko on aktiivinen ja toimii oikein. Toinen työkalurivijoukko on poistettu käytöstä, eikä sitä voi käyttää.
  • Voit poistaa WebBrowser-ohjausobjektin nykyisen sisällön siirtymällä oletusarvoiseen tyhjään sivuun jonkin toisen komentopainikkeen napsautustapahtuman (tai jonkin muun sopivan koodin kohdan avulla) seuraavan koodin avulla:
       WebBrowser1.Navigate "about:blank"
    					

Suositukset

Saat lisätietoja Visual Basicin WebBrowser-ohjausobjektista napsauttamalla seuraavia artikkelien numeroita, jolloin pääset lukemaan artikkelit Microsoft Knowledge Base -tietokannassa:
162719 Visual Basic 5.0:n WebBrowser-ohjausobjektin käyttäminen (tämä artikkeli saattaa olla englanninkielinen)
188271 Visual Basicin WebBrowser-ohjausobjektin sisällön tulostaminen (tämä artikkeli saattaa olla englanninkielinen)
191692 Ongelma: Shdocvw.dll ei sisälly PDW-asennuspakettiin (tämä artikkeli saattaa olla englanninkielinen)
238313 Ongelma: Internet Explorer -asiakirjaobjektimallin käyttäminen Visual Basicista (tämä artikkeli saattaa olla englanninkielinen)

Ominaisuudet

Artikkelin tunnus: 243058 - Viimeisin tarkistus: 30. maaliskuuta 2006 - Versio: 4.2
Artikkelin tiedot koskevat seuraavia tuotteita:
  • Microsoft Office Excel 2003
  • Microsoft Excel 2002 Standard Edition
  • Microsoft Excel 2000 Standard Edition
  • Microsoft Excel 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
  • Microsoft Office PowerPoint 2003
  • Microsoft PowerPoint 2002 Standard Edition
  • Microsoft PowerPoint 2000 Standard Edition
  • Microsoft PowerPoint 97 Standard Edition
  • Microsoft Office Word 2003
  • Microsoft Word 2002 Standard Edition
  • Microsoft Word 2000 Standard Edition
  • Microsoft Word 97 Standard Edition
Hakusanat: 
kbhowto KB243058

Anna palautetta

 

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