Oireet
Kun suoritat Microsoft Visual Basic -koodin, joka käyttää automaatiota Microsoft Word hallintaan, saatat saada jonkin seuraavista virhesanomista:
Virhesanoma 1Run-time error '-2147023174' (800706ba)
AutomaatiovirheVirhesanoma 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
-
Aloita uusi Standard EXE -projekti Visual Basicissa. Lomake1 luodaan oletusarvoisesti.
-
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.
-
-
Aseta Komentopainike lomakkeeseen1.
-
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
-
Käynnistä ohjelma valitsemalla Suorita-valikossaKäynnistä tai painamalla F5-näppäintä.
-
Valitse Komentopainike. Virhettä ei tapahdu. Viittaus Word on kuitenkin luotu eikä sitä ole julkaistu.
-
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. -
Pysäytä projekti ja muuta seuraavaa riviä:
.PageSetup.LeftMargin = InchesToPoints(1.25)
-to-
.PageSetup.LeftMargin = oWord.InchesToPoints(1.25)
-
Suorita ohjelma uudelleen. Valitse sitten Komentopainike. Virhettä ei tapahdu.
-
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. -
Pysäytä projekti ja muuta seuraavaa riviä:
Set oRange = ActiveDocument.Sections(1).Range
-to-
Set oRange = oWord.ActiveDocument.Sections(1).Range
-
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: