Hatókör
Office Products

Jelenségek

Amikor olyan Microsoft Visual Basic-kódot futtat, amely az Automation használatával vezérli a Microsoft Word, az alábbi hibaüzenetek egyike jelenhet meg: 1. hibaüzenet

"-2147023174" futásidejű hiba (800706ba) Automatizálási hiba

2. hibaüzenet:

462-s futásidejű hiba: A távoli kiszolgáló gépe nem létezik vagy nem érhető el

A probléma oka

A Visual Basic létrehozott egy Word mutató hivatkozást egy olyan kódsor miatt, amely meghív egy Word objektumot, metódust vagy tulajdonságot anélkül, hogy egy Word objektumváltozóval minősítenék. A Visual Basic nem adja ki ezt a hivatkozást, amíg be nem fejezi a programot. Ez a hibás hivatkozás zavarja az automatizálási kódot, ha a kód többször is fut.

Megoldás

Módosítsa úgy a kódot, hogy az Word objektumra, metódusra vagy tulajdonságra irányuló minden hívás a megfelelő objektumváltozóval legyen minősítve.

Állapot

A jelenség szándékos.

További információ

A Word automatizálásához létre kell hoznia egy objektumváltozót, amely általában a Word Alkalmazás vagy Dokumentum objektumra hivatkozik. Ezután más objektumváltozók is beállíthatók úgy, hogy az Word objektummodell egyik kijelölésére, tartományára vagy más objektumára hivatkozzon. Amikor Word objektumot, metódust vagy tulajdonságot használó kódot ír, mindig a megfelelő objektumváltozóval kell megelőznie a hívást. Ha nem, a Visual Basic egy rejtett globális változóhivatkozást használ, amelyet az aktuálisan futó példányra állít be. Ha Word le van állítva, vagy ha a deklarált objektumváltozó felszabadul, a rejtett globális változó mostantól érvénytelen (megsemmisített) objektumra fog hivatkozni. Az automatizálási kód ismételt futtatásakor a rejtett objektumváltozó hívásai a fent említett hibával meghiúsulnak.Az alábbi lépések bemutatják, hogyan reprodukálható a probléma, és hogyan javítható ki.  

A viselkedés reprodukálásának lépései

  1. Indítson el egy új Standard EXE-projektet a Visual Basicben. A form1 alapértelmezés szerint létrejön.

  2. Kattintson a Projekt menü Hivatkozások elemére, majd az alábbi lehetőségek egyikére:

    • Office Word 2007 esetén kattintson a Microsoft Word 12.0 objektumtár elemre.

    • A 2003-Word esetén kattintson a Microsoft Word 11.0 objektumtár elemre.

    • A 2003-Word esetében kattintson a Microsoft Word 10.0 Objektumtár elemre.

    • A 2000-Word esetében kattintson a Microsoft Word 9.0 objektumtár elemre.

    • A 97-Word kattintson a Microsoft Word 8.0 Objektumtár elemre.

  3. Helyezzen el egy CommandButton elemet a Form1 űrlapon.

  4. Másolja a következő kódot a Form1 kódablakba:

          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. A Futtatás menüben kattintson a Start gombra, vagy nyomja le az F5 billentyűt a program elindításához.

  6. Kattintson a CommandButton parancsra. Nem történik hiba. A Word hivatkozása azonban létrejött, és nem lett közzéadva.

  7. Kattintson ismét a CommandButton elemre, és figyelje meg, hogy a korábban ismertetett hibát kapja.Megjegyzés: A hiba azért fordul elő, mert a kód a InchToPoints metódusra hivatkozik anélkül, hogy a hívást az oWord objektumváltozóval előzne meg.

  8. Állítsa le a projektet, és módosítsa a következő sort:

    .PageSetup.LeftMargin = InchesToPoints(1.25)
    

    -to-  

    .PageSetup.LeftMargin = oWord.InchesToPoints(1.25)
    
  9. Futtassa újra a programot. Ezután kattintson a CommandButton elemre. Nem történik hiba.

  10. Kattintson ismét a CommandButton elemre, és figyelje meg, hogy a hibaüzenet jelenik meg.Megjegyzés: A hiba azért fordul elő, mert a kód az egyik ActiveDocument-szakasz Range objektumára hivatkozik, anélkül, hogy az oWord objektumváltozóval előzne meg hívást.

  11. Állítsa le a projektet, és módosítsa a következő sort:

    Set oRange = ActiveDocument.Sections(1).Range
    

    -to-  

    Set oRange = oWord.ActiveDocument.Sections(1).Range
    
  12. Futtassa újra a programot. Vegye figyelembe, hogy a kódot többször is futtathatja hiba nélkül.

A Word automatizálását automatizáló Visual Basic-projekt létrehozásakor, ha a projekt a Microsoft Word Objektumtárra hivatkozik, a Word objektummodell objektumainak, metódusainak és tulajdonságainak mintakódja a Word súgófájlból érhető el. Ha a kurzor a kódban egy kulcsszó fölé kerül, az F1 billentyű lenyomásával megjelenik a súgó összes megfelelő szövege.A súgótémakörben szereplő mintakód a Microsoft Word Visual Basic for Applications kódja lesz. Nem jeleníti meg azokat az objektumhivatkozásokat, amelyekre a Visual Basic-kódnak szüksége van. Szükség szerint hozzá kell adnia a minősítőket.

Hivatkozások

További információért tekintse meg a Microsoft Tudásbázis következő cikkeit:

178510 PRB: A(z) "_Global" objektum Excel Automation metódusa sikertelen

Az Office-alkalmazások automatizálásával kapcsolatos további információkért kattintson az alábbi cikkszámra a Microsoft Tudásbázisban a cikk megtekintéséhez:

Word objektummodell áttekintése

További segítségre van szüksége?

További lehetőségeket szeretne?

Fedezze fel az előfizetés előnyeit, böngésszen az oktatóanyagok között, ismerje meg, hogyan teheti biztonságossá eszközét, és így tovább.