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ą
-
Pradėkite naują standartinį EXE projektą "Visual Basic". Form1 sukuriamas pagal numatytuosius numatytuosius.
-
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.
-
-
Form1 įjunkite CommandButton.
-
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
-
Meniu vykdyti spustelėkite pradėti arba paspauskite klavišą F5, kad paleistumėte programą.
-
Spustelėkite mygtuką Command. Įvyksta klaida. Tačiau nuoroda į "Word" buvo sukurta ir nebuvo išleista.
-
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.
-
Baigti projektą ir keisti šią eilutę:
.PageSetup.LeftMargin = InchesToPoints(1.25)
į
.PageSetup.LeftMargin = oWord.InchesToPoints(1.25)
-
Paleiskite programą dar kartą. Tada spustelėkite CommandButton. Įvyksta klaida.
-
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.
-
Baigti projektą ir keisti šią eilutę:
Set oRange = ActiveDocument.Sections(1).Range
į
Set oRange = oWord.ActiveDocument.Sections(1).Range
-
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