Príznaky
Keď spustíte kód jazyka Microsoft Visual Basic, ktorý používa automatizáciu na ovládanie programu Microsoft Word, môže sa zobraziť jedno z nasledujúcich chybových hlásení:chybové hlásenie 1
Chyba spustenia chyby "-2147023174" (800706ba) Automatizácia
Chybové hlásenie 2
Chyba spustenia "462": vzdialený serverový stroj neexistuje alebo nie je k dispozícii
Príčina
Visual Basic vytvoril odkaz na Word z dôvodu kódu, ktorý zavolá objekt Wordu, metódu alebo vlastnosť bez toho, aby ho prispôsobil premennej objektu Wordu. Visual Basic nezbavuje tento odkaz, kým neukončíte program. Tento potulný odkaz sa zarovná s kódom automatizácie, keď sa kód spustí viackrát.
Riešenie
Upravte kód tak, aby bol každý hovor na objekte Word, metóda alebo vlastnosť kvalifikovaný s príslušnou premennou objektu.
Stav
Toto správanie je zámerné.
Ďalšie informácie
Ak chcete automatizovať Word, môžete vytvoriť premennú objektu, ktorá zvyčajne odkazuje na Wordovú aplikáciu alebo objekt dokumentu. Ďalšie premenné objektu môžete potom nastaviť tak, aby odkazovali na výber, rozsah alebo iné objekty v objektovom modeli Wordu. Pri písaní kódu použite objekt, metódu alebo vlastnosť Wordu, vždy by ste mali pred volaním zavolať pomocou príslušnej premennej objektu. Ak to tak nie je, Visual Basic použije skrytý globálny premenný odkaz, ktorý nastavuje na aktuálne spustenú inštanciu. Ak je Word vypnutý alebo ak je deklarovaná premenná objektu uvoľnená, Skrytá globálna premenná bude odkazovať na neplatný (zničený) objekt. Pri opätovnom spustení kódu automatizácie sa na túto skrytú premennú objektu nepodarí vyskytla sa chyba. Nasledujúci postup znázorňuje, ako tento problém reprodukovať, a ako ho opraviť.
Kroky na reprodukovanie správania
-
Spustite nový štandardný EXE projekt v jazyku Visual Basic. Form1 sa vytvorí na základe predvoleného nastavenia.
-
Kliknite na položku Odkazy z ponuky projekt a potom kliknite na niektorú z nasledujúcich možností:
-
V prípade balíka Office Word 2007 kliknite na položku Objektová knižnica programu Microsoft Word 12,0
-
V prípade Wordu 2003 kliknite na položku Objektová knižnica programu Microsoft Word 11,0
-
V prípade Wordu 2003 kliknite na položku Objektová knižnica programu Microsoft Word 10,0
-
V prípade Wordu 2000 kliknite na položku Objektová knižnica programu Microsoft Word 9,0.
-
V prípade Wordu 97 kliknite na položku Objektová knižnica programu Microsoft Word 8,0.
-
-
Miesto CommandButton na Form1.
-
Skopírujte nasledujúci kód do okna s kódom v Form1:
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
-
V ponuke Spustiť kliknite na položku Spustiť alebo stlačením klávesu F5 spustite program.
-
Kliknite na CommandButton. Nevyskytne sa žiadna chyba. Odkaz na Word sa však vytvoril a nebol vydaný.
-
Znova kliknite na CommandButton a Všimnite si, že sa zobrazí chyba, ktorá bola predtým opísaná.Poznámka: Chyba sa vyskytuje, pretože kód odkazuje na metódu InchesToPoints bez predchádzajúceho hovoru s premennou objektu oWord.
-
Zastavte projekt a zmeňte nasledujúci postup:
.PageSetup.LeftMargin = InchesToPoints(1.25)
na
.PageSetup.LeftMargin = oWord.InchesToPoints(1.25)
-
Znova spustite program. Potom kliknite na CommandButton. Nevyskytne sa žiadna chyba.
-
Znova kliknite na CommandButton a Všimnite si, že sa zobrazí chybové hlásenie.Poznámka: Chyba sa vyskytuje, pretože kód odkazuje na objekt rozsahu ActiveDocument, ktorý nie je predchádzajúci hovoru s premennou objektu oWord.
-
Zastavte projekt a zmeňte nasledujúci postup:
Set oRange = ActiveDocument.Sections(1).Range
na
Set oRange = oWord.ActiveDocument.Sections(1).Range
-
Znova spustite program. Všimnite si, že kód môžete spustiť niekoľkokrát bez chyby.
Pri vytváraní projektu programu Visual Basic Automatizácia Wordu, ak má váš projekt odkaz na objektovú knižnicu Microsoft Wordu, vzorový kód pre objekty, metódy a vlastnosti objektového modelu Word je k dispozícii v súbore Pomocníka programu Word. Keď sa kurzor nachádza nad kľúčovým slovom v kóde, zobrazí sa príslušný text Pomocníka stlačením klávesu F1. Vzorový kód v téme Pomocníka bude kódom programu Microsoft Word Visual Basic for Applications. Nezobrazí odkazy na objekt, ktoré vyžaduje kód jazyka Visual Basic. Budete musieť pridať kvalifikátory podľa potreby.
Odkazy
Ďalšie informácie nájdete v nasledujúcich článkoch databázy Microsoft Knowledge Base:
178510 PRB: metóda automatizácie Excelu objektu "_Global" zlyhala
167223 K dispozícii je súbor Pomocníka na automatizáciu balíka Microsoft Office 97Ďalšie informácie o automatizácii aplikácií balíka Office nájdete v článku databázy Microsoft Knowledge Base, ktorý sa zobrazí po kliknutí na nasledujúce číslo:
222101 HOWTO: Vyhľadanie a používanie dokumentácie k objektovým modelom balíka Office