Käytetään kohteeseen
Office Products

Oireet

Kun suoritat Microsoft Visual Basic -koodin, joka käyttää automaatiota Microsoft Word hallintaan, saatat saada jonkin seuraavista virhesanomista: Virhesanoma 1

Run-time error '-2147023174' (800706ba) Automaatiovirhe

Virhesanoma 2

Suorituksenaikainen virhe '462': Etäpalvelinkonetta ei ole olemassa tai se ei ole käytettävissä

Syy

Visual Basic on luonut viittauksen Word koodirivin vuoksi, joka kutsuu Word objektia, menetelmää tai ominaisuutta ilman Word objektimuuttujan määrittämistä. Visual Basic ei julkaise tätä viittausta, ennen kuin lopetat ohjelman. Tämä virheviittaus häiritsee automaatiokoodia, kun koodi suoritetaan useita kertoja.

Ratkaisu

Muokkaa koodia siten, että jokainen kutsu Word objektiin, menetelmään tai ominaisuuteen on määritetty sopivan objektimuuttujan kanssa.

Tila

Tämä tapahtuu rakenteen mukaan.

Lisätietoja

Jos haluat automatisoida Word, luo objektimuuttuja, joka yleensä viittaa Word Sovellus- tai Tiedosto-objektiin. Muut objektimuuttujat voidaan sitten määrittää viittaamaan valintaan, alueeseen tai muihin objekteihin Word objektimallissa. Kun kirjoitat koodia käyttääksesi Word objektia, menetelmää tai ominaisuutta, sinun on aina kirjoitettava puhelun eteen sopiva objektimuuttuja. Jos näin ei ole, Visual Basic käyttää piilotettua yleistä muuttujaviittausta, jonka se määrittää käynnissä olevalle esiintymälle. Jos Word sammutetaan tai jos määritetty objektimuuttuja vapautetaan, piilotettu yleinen muuttuja viittaa nyt virheelliseen (tuhottuun) objektiin. Kun suoritat automaatiokoodin uudelleen, tämän piilotetun objektimuuttujan kutsut epäonnistuvat edellä mainitun virheen yhteydessä.Seuraavissa vaiheissa kuvataan, miten tämä ongelma toistetaan ja miten se korjataan.  

Toimintatavan toistaminen

  1. Aloita uusi Standard EXE -projekti Visual Basicissa. Lomake1 luodaan oletusarvoisesti.

  2. Valitse Projekti-valikosta Viittaukset ja valitse sitten jokin seuraavista vaihtoehdoista:

    • Jos käytössäsi on Office Word 2007, valitse Microsoft Word 12.0 -objektikirjasto

    • Jos Word 2003, valitse Microsoft Word 11.0 -objektikirjasto

    • Jos Word 2003, valitse Microsoft Word 10.0 -objektikirjasto

    • Jos käytössäsi on Word 2000, valitse Microsoft Word 9.0 -objektikirjasto.

    • Jos haluat Word 97, valitse Microsoft Word 8.0 -objektikirjasto.

  3. Aseta Komentopainike lomakkeeseen1.

  4. Kopioi seuraava koodi Lomakkeen1 koodi-ikkunaan:

          Option Explicit
    
          Private Sub Command1_Click()
             Dim oWord As Word.Application
             Dim oDoc As Word.Document
             Dim oRange as Word.Range
    
             Set oWord = CreateObject("Word.Application")
             With oWord
                 .Visible = True
                 .Activate
                 .WindowState = wdWindowStateNormal
             End With
    
             Set oDoc = oWord.Documents.Add
             MsgBox "Document open", vbMsgBoxSetForeground
             With oDoc
                 .PageSetup.LeftMargin = InchesToPoints(1.25)
             End With
    
             ' This example inserts text at the end of section one.
             Set oRange = ActiveDocument.Sections(1).Range
             With oRange
                 .MoveEnd Unit:=wdCharacter, Count:= -1
                 .Collapse Direction:=wdCollapseEnd
                 .InsertParagraphAfter
                 .InsertAfter "End of section."
             End With
    
             With oDoc
                 .Saved = True
             End With
    
             Set oRange = Nothing
             Set oDoc = Nothing
             oWord.Quit
             Set oWord = Nothing
          End Sub
    
  5. Käynnistä ohjelma valitsemalla Suorita-valikossaKäynnistä tai painamalla F5-näppäintä.

  6. Valitse Komentopainike. Virhettä ei tapahdu. Viittaus Word on kuitenkin luotu eikä sitä ole julkaistu.

  7. Napsauta Komentopainiketta uudelleen ja huomaa, että saat aiemmin kuvatun virheen.Huomautus Virhe ilmenee, koska koodi viittaa InchesToPoints-menetelmään ilman, että puhelua edeltää oWord-objektimuuttuja.

  8. Pysäytä projekti ja muuta seuraavaa riviä:

    .PageSetup.LeftMargin = InchesToPoints(1.25)
    

    -to-  

    .PageSetup.LeftMargin = oWord.InchesToPoints(1.25)
    
  9. Suorita ohjelma uudelleen. Valitse sitten Komentopainike. Virhettä ei tapahdu.

  10. Napsauta Komentopainike-painiketta uudelleen ja huomaa, että saat virheilmoituksen.Huomautus Virhe ilmenee, koska koodi viittaa ActiveDocument-osan 1 Alue-objektiin ilman, että puhelua edeltää oWord-objektimuuttuja.

  11. Pysäytä projekti ja muuta seuraavaa riviä:

    Set oRange = ActiveDocument.Sections(1).Range
    

    -to-  

    Set oRange = oWord.ActiveDocument.Sections(1).Range
    
  12. Suorita ohjelma uudelleen. Huomaa, että voit suorittaa koodin useita kertoja ilman virhettä.

Kun luot Visual Basic -projektin automatisoimaan Word, jos projektissa on viittaus Microsoft Word -objektikirjastoon, Word-objektimallin objektien, menetelmien ja ominaisuuksien mallikoodi on käytettävissä Word ohjetiedostossa. Kun kohdistin on koodin avainsanan päällä, näet kaikki soveltuvat ohjetekstit painamalla F1-näppäintä.Ohjeaiheen esimerkkikoodina on Microsoftin Word Visual Basic for Applications koodi. Se ei näytä Visual Basic -koodin vaatimia objektiviittauksia. Tarkenteet on lisättävä tarpeen mukaan.

Lisätietoja

Lisätietoja on seuraavissa Microsoft Knowledge Base -tietokannan artikkeleissa:

178510 PRB: Excel automation Method of Object '_Global'Failed

Saat lisätietoja Office-sovellusten automatisoinnista napsauttamalla alla olevaa artikkelin numeroa, jolloin saat artikkelin näkyviin Microsoft Knowledge Base -tietokannassa:

Word objektimallin yleiskatsaus

Tarvitsetko lisäohjeita?

Haluatko lisää vaihtoehtoja?

Tutustu tilausetuihin, selaa harjoituskursseja, opi suojaamaan laitteesi ja paljon muuta.