Symptomer
Når du kjører Microsoft Visual Basic-kode som bruker automatisering til å kontrollere Microsoft Word, kan du få en av følgende feilmeldinger:
Feilmelding 1
Kjøretidsfeil -2147023174 (800706ba)
Automatiseringsfeil
Feilmelding 2
Kjøretidsfeil 462: Den eksterne servermaskinen finnes ikke eller er ikke tilgjengelig
Årsak
Visual Basic har opprettet en referanse til Word på grunn av en kodelinje som kaller opp en Word objekt, metode eller egenskap uten å kvalifisere den med en Word objektvariabel. Visual Basic frigir ikke denne referansen før du avslutter programmet. Denne feilreferansen forstyrrer automatiseringskoden når koden kjøres mer enn én gang.
Løsning
Endre koden slik at hvert kall til et Word objekt, metode eller egenskap er kvalifisert med riktig objektvariabel.
Status
Denne virkemåten er etter utforming.
Mer informasjon
Hvis du vil automatisere Word, oppretter du en objektvariabel som vanligvis refererer til Word program- eller dokumentobjektet. Andre objektvariabler kan deretter angis til å referere til et utvalg, et område eller andre objekter i den Word objektmodellen. Når du skriver kode for å bruke et Word objekt, metode eller egenskap, bør du alltid sette den riktige objektvariabelen foran kallet. Hvis du ikke gjør det, bruker Visual Basic en skjult global variabelreferanse som angis til forekomsten som kjører. Hvis Word avsluttes, eller hvis den deklarerte objektvariabelen frigis, vil den skjulte globale variabelen nå referere til et ugyldig (ødelagt) objekt. Når du kjører automatiseringskoden på nytt, vil kall til denne skjulte objektvariabelen mislykkes med den nevnte feilen.
Følgende trinn illustrerer hvordan du gjenskaper dette problemet, og hvordan du retter det opp.
Fremgangsmåte for å reprodusere virkemåte
-
Start et nytt Standard EXE-prosjekt i Visual Basic. Skjema1 er opprettet som standard.
-
Klikk Referanser på Prosjekt-menyen , og klikk deretter ett av følgende alternativer:
-
Klikk Microsoft Word 12.0-objektbibliotek for Office Word 2007
-
Klikk Microsoft Word 11.0-objektbibliotek for Word 2003
-
Klikk Microsoft Word 10.0-objektbibliotek for Word 2003
-
Klikk Microsoft Word 9.0-objektbibliotek for Word 2000.
-
Klikk Microsoft Word 8.0-objektbibliotek for Word 97.
-
-
Plasser en CommandButton på Skjema1.
-
Kopier følgende kode til kodevinduet i Skjema1:
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
-
Klikk Start på Kjør-menyen, eller trykk F5 for å starte programmet.
-
Klikk commandbuttonen. Det oppstår ingen feil. En referanse til Word er imidlertid opprettet og er ikke utgitt.
-
Klikk CommandButton på nytt, og vær oppmerksom på at du får feilmeldingen som er beskrevet tidligere.
Obs! Feilen oppstår fordi koden refererer til metoden InchesToPoints uten å ha oWord-objektvariabelen foran kallet. -
Stopp prosjektet, og endre følgende linje:
.PageSetup.LeftMargin = InchesToPoints(1.25)
-Å-
.PageSetup.LeftMargin = oWord.InchesToPoints(1.25)
-
Kjør programmet på nytt. Klikk deretter kommandoknappen. Det oppstår ingen feil.
-
Klikk CommandButton på nytt, og vær oppmerksom på at du får feilen.
Obs! Feilen oppstår fordi koden refererer til ActiveDocument-inndelingens områdeobjekt uten å sette oWord-objektvariabelen foran oppkallet. -
Stopp prosjektet, og endre følgende linje:
Set oRange = ActiveDocument.Sections(1).Range
-Å-
Set oRange = oWord.ActiveDocument.Sections(1).Range
-
Kjør programmet på nytt. Vær oppmerksom på at du kan kjøre koden flere ganger uten feil.
Når du bygger et Visual Basic-prosjekt som automatiserer Word, hvis prosjektet har en referanse til Microsoft Word-objektbiblioteket, er eksempelkode for objekter, metoder og egenskaper for Word objektmodell tilgjengelig fra hjelpefilen Word. Når markøren er over et nøkkelord i koden, ser du eventuell gjeldende hjelpetekst ved å trykke F1-tasten.
Eksempelkoden i hjelpeemnet er Microsoft Word Visual Basic for Applications-koden. Den viser ikke objektreferansene som Visual Basic-koden krever. Du må legge til kvalifikatorene etter behov.
Referanser
Hvis du vil ha mer informasjon, kan du se følgende artikler i Microsoft Knowledge Base:
178510 PRB: Automatiseringsmetoden for objektet _Global i Excel mislyktes
Hvis du vil ha mer informasjon om automatisering av Office-programmer, klikker du artikkelnummeret nedenfor for å vise artikkelen i Microsoft Knowledge Base: