Conectați-vă cu Microsoft
Conectați-vă sau creați un cont
Salut,
Selectați un alt cont.
Aveți mai multe conturi
Alegeți contul cu care doriți să vă conectați.

Simptome

Când se execută codul Microsoft Visual Basic care utilizează automatizare pentru a controla Microsoft Word, este posibil să primiți unul dintre următoarele mesaje de eroare:mesaj de eroare 1

Eroarea de automatizare '-2147023174 ' (800706ba din)

Mesaj de eroare 2

Eroarea Run-Time ' 462 ': computerul de la distanță nu există sau nu este disponibil

Cauză

Visual Basic a stabilit o referință la Word din cauza unei linii de cod care apelează un obiect, o metodă sau o proprietate Word fără a o califica cu o variabilă a obiectului Word. Visual Basic nu eliberează această referință până când nu terminați programul. Această referință rătăcitoare interferează cu codul de automatizare atunci când codul este rulat de mai multe ori.

Rezolvare

Modificați codul astfel încât fiecare apel către un obiect Word, o metodă sau o proprietate să fie calificat cu variabila de obiect corespunzătoare.

Stare

Acest comportament este proiectat.

Mai multe informații

Pentru a automatiza Word, stabiliți o variabilă de obiect care se referă de obicei la aplicația Word sau la obiectul document. Alte variabile de obiect pot fi setate pentru a face referire la o selecție, la o zonă sau la alte obiecte din modelul de obiecte Word. Atunci când scrieți cod pentru a utiliza un obiect Word, o metodă sau o proprietate, trebuie să precede întotdeauna apelul cu variabila de obiect corespunzătoare. Dacă nu faceți acest lucru, Visual Basic utilizează o referință variabilă globală ascunsă pe care o setează la instanța care se execută în prezent. Dacă Word este Shutdown sau dacă variabila obiect declarată este lansată, variabila globală ascunsă va face referire acum la un obiect nevalid (distrus). Atunci când se execută din nou codul de automatizare, apelurile la această variabilă de obiect ascuns nu vor reuși cu eroarea menționată anterior. Următorii pași ilustrează modul în care se reproduc această problemă și cum se corectează.

Pașii pentru reproducerea comportamentului

  1. Porniți un nou proiect standard EXE în Visual Basic. Form1 este creat în mod implicit.

  2. Faceți clic pe referințe din meniul Project , apoi faceți clic pe una dintre următoarele opțiuni:

    • Pentru Office Word 2007, faceți clic pe Microsoft word 12,0 Object Library

    • Pentru Word 2003, faceți clic pe Microsoft word 11,0 Object Library

    • Pentru Word 2003, faceți clic pe Microsoft word 10,0 Object Library

    • Pentru Word 2000, faceți clic pe Microsoft word 9,0 Object Library.

    • Pentru Word 97, faceți clic pe Microsoft word 8,0 Object Library.

  3. Amplasați un CommandButton pe Form1.

  4. Copiați următorul cod în fereastra codului din 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
  5. În meniul rulare , faceți clic pe Start sau apăsați tasta F5 pentru a porni programul.

  6. Faceți clic pe CommandButton. Nu apare nicio eroare. Cu toate acestea, a fost creată o referință la Word și nu a fost lansată.

  7. Faceți clic pe CommandButton din nou și rețineți că primiți eroarea descrisă anterior.Notă Eroarea apare deoarece codul se referă la metoda InchesToPoints fără a preceda apelul cu variabila de obiect oWord.

  8. Opriți proiectul și modificați următoarea linie:

    .PageSetup.LeftMargin = InchesToPoints(1.25)

    pentru a

    .PageSetup.LeftMargin = oWord.InchesToPoints(1.25)
  9. Rulează din nou programul. Apoi faceți clic pe CommandButton. Nu apare nicio eroare.

  10. Faceți clic pe CommandButton din nou și rețineți că primiți eroarea.Notă Eroarea apare deoarece codul face referire la obiectul de zonă ActiveDocument din secțiunea One fără a preceda apelul cu variabila de obiect oWord.

  11. Opriți proiectul și modificați următoarea linie:

    Set oRange = ActiveDocument.Sections(1).Range

    pentru a

    Set oRange = oWord.ActiveDocument.Sections(1).Range
  12. Rulează din nou programul. Rețineți că puteți executa codul de mai multe ori fără eroare.

Atunci când construiți un proiect Visual Basic care automatizează Word, dacă proiectul are o referință la biblioteca de obiecte Microsoft Word, codul eșantion pentru obiectele, metodele și proprietățile modelului Word Object este disponibil din fișierul Ajutor Word. Atunci când cursorul trece peste un cuvânt cheie din cod, veți vedea orice text de ajutor aplicabil, apăsând tasta F1. Codul eșantion din subiectul de ajutor va fi codul Microsoft Word Visual Basic for Applications. Nu va afișa referințele de obiect pe care le necesită codul Visual Basic. Va trebui să adăugați calificările, după cum este necesar.

Referințe

Pentru informații suplimentare, consultați următoarele articole din baza de cunoștințe Microsoft:

178510 PRB: metoda de automatizare Excel a obiectului ' _Global ' nu a reușit

167223 Fișier de ajutor pentru Microsoft Office 97 Automation disponibilPentru informații suplimentare despre automatizarea aplicațiilor Office, faceți clic pe numărul de articol de mai jos pentru a vedea articolul în baza de cunoștințe Microsoft:

222101 HOWTO: Găsirea și utilizarea documentației pentru modelul de obiecte Office

Aveți nevoie de ajutor suplimentar?

Doriți mai multe opțiuni?

Explorați avantajele abonamentului, navigați prin cursurile de instruire, aflați cum să vă securizați dispozitivul și multe altele.

Comunitățile vă ajută să adresați întrebări și să răspundeți la întrebări, să oferiți feedback și să primiți feedback de la experți cu cunoștințe bogate.

Au fost utile aceste informații?

Cât de mulțumit sunteți de calitatea limbajului?
Ce v-a afectat experiența?
Apăsând pe Trimitere, feedbackul dvs. va fi utilizat pentru a îmbunătăți produsele și serviciile Microsoft. Administratorul dvs. IT va avea posibilitatea să colecteze aceste date. Angajamentul de respectare a confidențialității.

Vă mulțumim pentru feedback!

×