Sümptomid
Kui koodi, mis kasutab automatiseerimine kontrolli Microsoft Excel töötab, võib ilmneda üks järgmistest tõrketeadetest:
Microsoft Excel 97 ja uuemad versioonid Exceli, kuvatakse üks järgmise tõrketeate:
Tõrketeade 1
Run-time error '1004':
'< Meetod name >' objekti '_Global' nurjus.
Tõrketeade 2
Rakenduse määratletud või objekti määratletud tõrge
Microsoft Excel 95, kuvatakse üks järgmistest tõrketeadetest:
Tõrketeade 1
Run-time error "-2147023174"
Ole-automatiseerimise tõrge
Tõrketeade 2
Run-time error "462":
Kaugserveri masin pole olemas või pole saadaval.
Põhjus
Visual Basic on loonud Exceli viite rida koodi, mis kutsub Exceli objekti, meetod või atribuut elemendi Exceli objektimuutuja ilma tõttu. Visual Basic ei avalda see programmi lõpuni. Eksinud viide sekkub automaatika kood kui kood käivitatakse rohkem kui üks kord.
Lahendus
Selle probleemi lahendamiseks muutke koodi nii, et iga kõne Exceli objekti, meetod või atribuut on kvalifitseeritud sobiv objektimuutuja.
Olek
Selline käitumine on ette nähtud.
Lisateabe saamiseks
Microsoft Exceli automatiseerimiseks luua objektimuutuja, mis viitab tavaliselt Exceli rakendusobjekt või Exceli töövihiku objekt. Muud objekti muutujaid saate Määrake töölehe, lahtrivahemiku või muud objektid Microsoft Exceli objekti mudel. Exceli objekti, meetod või atribuut koodi kirjutamisel peaks alati enne vastavat objektimuutuja kõnet. Kui te seda ei tee, loob Visual Basicu oma viite Exceli. See võib tekitada probleeme, kui automaatika koodi käivitamisel mitu korda. Pange tähele, et isegi siis, kui koodi rida algab objektimuutuja, kõne võib teha Exceli objekti, meetod või atribuut keset rida koodi, mis ei ole eelnevalt objekti muutuja.
Järgmised sammud näitavad selle probleemi ning kuidas probleemi lahendamist.
Sellise käitumise taasesilekutsumise juhised
-
Alustada uue standardne EXE projekti Visual Basic. Form1 luuakse vaikimisi.
-
Klõpsake menüüs Project klõpsake Viitedja kontrollige objekti teegi versiooni Excel, mida kavatsete automatiseerida.
-
Koht CommandButton kontrolli Form1.
-
Kopeerige järgmine kood näide Form1 kood akna.
Option Explicit
Private Sub Command1_Click()
Dim xlApp As Excel.Application
Dim xlBook As Excel.Workbook
Dim xlSheet As Excel.Worksheet
Set xlApp = CreateObject("Excel.Application")
Set xlBook = xlApp.Workbooks.Add
Set xlSheet = xlBook.Worksheets("Sheet1")
xlSheet.Range(Cells(1, 1), Cells(10, 2)).Value = "Hello"
xlBook.Saved = True
Set xlSheet = Nothing
Set xlBook = Nothing
xlApp.Quit
Set xlApp = Nothing
End Sub -
Menüüs Run nuppu Startvõi vajutage klahvi F5, käivitage programm.
-
Klõpsake selle CommandButton kontrolli. Ilmneb tõrkeid. Siiski viidatakse Excel on loodud ja ei ole välja andnud.
-
Klõpsake selle CommandButton kontrolli uuesti. Pange tähele, et kuvatakse üks jaotises "Tunnused" kirjeldatud tõrketeadetest.
Märkus. Tõrketeade ilmneb, sest kood viitab lahter meetod ilma eelneva kõne ning
xlSheet objektimuutuja. -
Projekti lõpetada ja muuta koodi järgmine rida:
xlSheet.Range(Cells(1,1),Cells(10,2)).Value = "Hello"
Muutke koodirea sarnanevad järgmine rida koodi.
xlSheet.Range(xlSheet.Cells(1,1),xlSheet.Cells(10,2)).Value = "Hello"
-
Käivitage programm uuesti. Pange tähele, et saate käivitada koodi mitu korda ilma tõrketeate.
Viited
Lisateabe saamiseks klõpsake Microsofti teabebaasi (Knowledge Base) artiklite kuvamiseks järgmisi artiklinumbreid:
167223 Microsoft Office 97 automatiseerimine spikrifaili saadaval
189618 võidakse kuvada tõrketeade "Run-time error '-2147023174' (800706ba)" või "Run-time error"462"" Visual Basicu koodi, mis kasutab automatiseerimine juhtelemendi Wordi käivitamisel