Simptomai

Kai paleidžiate "Microsoft Visual Basic" kodą, kuris naudoja automatizavimą, kad galėtumėte valdyti "Microsoft Word", galite gauti vieną iš šių klaidos pranešimų:klaidos pranešimas 1

Vykdymo laiko klaida "-2147023174" (800706BA) automatizavimo klaida

2 klaidos pranešimas

Vykdymo laiko klaida "462": nuotolinio serverio įrenginio nėra arba jis nepasiekiamas

Priežastis

"Visual Basic" sukūrė nuorodą į "Word", nes yra kodo eilutė, kuri iškviečia "Word" objektą, metodą arba ypatybę, bet neturi "Word" objekto kintamojo. "Visual Basic" neišleidžia šios nuorodos, kol nebaigiate programos. Šio paklaidų nuoroda trukdo automatizavimo kodui, kai kodas vykdomas daugiau nei vienu metu.

Sprendimas

Modifikuokite kodą, kad kiekvienas skambutis į "Word" objektą, metodą arba ypatybę atitiktų atitinkamo objekto kintamąjį.

Statusą

Šią problemą galima sukurti pagal dizainą.

Daugiau informacijos

Norėdami automatizuoti "Word", galite nustatyti objekto kintamąjį, kuris paprastai reiškia "Word" taikomosios programos arba dokumento objektą. Tada gali būti nustatyti kiti objekto kintamieji, kurie nurodo į žymėjimą, intervalą ar kitus objektus, esančius "Word" objekto modelyje. Kai rašote kodą, kad galėtumėte naudoti "Word" objektą, metodą ar ypatybę, visada turėtumėte prieš pokalbį su atitinkamo objekto kintamuoju. Jei neturite, "Visual Basic" naudoja paslėptą pasaulinę kintamojo nuorodą, kurią nustato šiuo metu vykdomas egzempliorius. Jei programa "Word" yra išjungta arba pateiktas paskelbtas objekto kintamasis, paslėptas visuotinis kintamasis dabar nurodys netinkamą (sunaikintą) objektą. Kai dar kartą vykdote automatikos kodą, į šį paslėptų objektų kintamąjį nepavyks įtraukti anksčiau nurodytos klaidos. Toliau aprašyti veiksmai iliustruoja, kaip atkurti šią problemą ir kaip ją ištaisyti.

Veiksmai, kaip atkurti veikimą

  1. Pradėkite naują standartinį EXE projektą "Visual Basic". Form1 sukuriamas pagal numatytuosius numatytuosius.

  2. Meniu projektas spustelėkite nuorodos , tada spustelėkite vieną iš šių parinkčių:

    • Jei turite "Office Word 2007", spustelėkite "Microsoft Word" 12,0 objektų biblioteka

    • Jei turite "Word 2003", spustelėkite "Microsoft Word" 11,0 objektų biblioteka

    • Jei turite "Word 2003", spustelėkite "Microsoft Word" 10,0 objektų biblioteka

    • Jei turite "Word 2000", spustelėkite "Microsoft Word" 9,0 objektų biblioteka.

    • Jei turite "Word 97", spustelėkite "Microsoft Word" 8,0 objektų biblioteka.

  3. Form1 įjunkite CommandButton.

  4. Nukopijuokite šį kodą į Form1 kodo langą:

          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. Meniu vykdyti spustelėkite pradėti arba paspauskite klavišą F5, kad paleistumėte programą.

  6. Spustelėkite mygtuką Command. Įvyksta klaida. Tačiau nuoroda į "Word" buvo sukurta ir nebuvo išleista.

  7. Dar kartą spustelėkite CommandButton ir nepamirškite, kad gaunate klaidą, kurią anksčiau aprašėte.Pastaba Klaida įvyksta dėl to, kad kodas nurodo "InchesToPoints" metodą be ankstesnio skambučio su "oWord" objekto kintamuoju.

  8. Baigti projektą ir keisti šią eilutę:

    .PageSetup.LeftMargin = InchesToPoints(1.25)

    į

    .PageSetup.LeftMargin = oWord.InchesToPoints(1.25)
  9. Paleiskite programą dar kartą. Tada spustelėkite CommandButton. Įvyksta klaida.

  10. Dar kartą spustelėkite CommandButton ir nepamirškite, kad gaunate klaidos pranešimą.Pastaba Klaida įvyksta dėl to, kad kodas reiškia "ActiveDocument" sekcijos vieno objekto sritį be ankstesnio skambučio su "oWord" objekto kintamuoju.

  11. Baigti projektą ir keisti šią eilutę:

    Set oRange = ActiveDocument.Sections(1).Range

    į

    Set oRange = oWord.ActiveDocument.Sections(1).Range
  12. Paleiskite programą dar kartą. Nepamirškite, kad galite paleisti kodą kelis kartus nepaleidę klaidų.

Kuriant "Visual Basic" projekto automatizavimą "Word", jei jūsų projekte yra nuoroda į "Microsoft Word" objektų biblioteką, "Word" objekto modelio objektų, metodų ir ypatybių pavyzdinis kodas galimas iš "Word" žinyno failo. Kai žymeklis yra virš klavišo žodžio kode, matysite bet kokį taikytiną žinyno tekstą paspausdami klavišą F1. Žinyno temos pavyzdinis kodas bus "Microsoft Word" Visual Basic for Applications kodas. Jame nebus rodomos objekto nuorodos, kurias reikia naudoti jūsų "Visual Basic" kodui. Jums reikės atitinkamai įtraukti kvalifikatorius.

Nuorodos

Jei turite papildomos informacijos, peržiūrėkite šiuos straipsnius "Microsoft" žinių bazėje:

178510 PRB: nepavyko "Excel" automatikos objekto "_Global" metodas

167223 "Microsoft Office 97" automatizavimo žinyno failasJei reikia papildomos informacijos apie "Office" taikomųjų programų automatizavimą, spustelėkite toliau pateiktą straipsnio numerį ir peržiūrėkite straipsnį "Microsoft" žinių bazėje:

222101 HOWTO: "Office" objekto modelio dokumentacijos radimas ir naudojimas

Reikia daugiau pagalbos?

Tobulinkite savo įgūdžius
Ieškoti mokymo
Pirmiausia gaukite naujų funkcijų
Prisijungti prie "Microsoft Insider"

Ar ši informacija buvo naudinga?

Ar esate patenkinti vertimo kokybe?
Kas turėjo įtakos jūsų patirčiai?

Dėkojame už jūsų atsiliepimus!

×