Oireet
Kun suoritat microsoft Excelin hallintaan automaatiota käyttävää koodia, saattaa ilmetä jokin seuraavista virheistä: Microsoft Excel 97:ssä ja excelin uudemmissa versioissa saat jonkin seuraavista virhesanomista:
Virhesanoma 1
Suorituksenaikainen virhe '1004': Menetelmä "<menetelmän nimi>" objektille "_Global" epäonnistui
Virhesanoma 2
Sovelluksen määrittämä tai objektin määrittämä virhe
Microsoft Excel 95:ssä saat jonkin seuraavista virhesanomista:
Virhesanoma 1
Suorituksenaikainen virhe "-2147023174" OLE-automaatiovirhe
Virhesanoma 2
Suorituksenaikainen virhe '462': Etäpalvelinkonetta ei ole tai se ei ole käytettävissä.
Syy
Visual Basic on luonut viittauksen Exceliin, koska koodirivi kutsuu Excel-objektia, -menetelmää tai -ominaisuutta ilman, että elementti määritetään Excel-objektimuuttujan kanssa. Visual Basic ei julkaise tätä viittausta, ennen kuin lopetat ohjelman. Tämä virheviittaus häiritsee automaatiokoodia, kun koodi suoritetaan useita kertoja.
Ratkaisu
Voit ratkaista tämän ongelman muokkaamalla koodia niin, että jokainen Excel-objektin, -menetelmän tai -ominaisuuden kutsu määritetään sopivan objektimuuttujan mukaan.
Tila
Tämä tapahtuu rakenteen mukaan.
Lisätietoja
Jos haluat automatisoida Microsoft Excelin, luo objektimuuttuja, joka yleensä viittaa Excelin sovellusobjektiin tai Excel-työkirjaobjektiin. Muut objektimuuttujat voidaan sitten määrittää viittaamaan laskentataulukkoon, alueeseen tai muihin Objekteihin Microsoft Excel -objektimallissa. Kun kirjoitat koodin Excel-objektin, -menetelmän tai -ominaisuuden käyttöä varten, sinun on aina kirjoitettava puhelun eteen sopiva objektimuuttuja. Jos näin ei ole, Visual Basic muodostaa oman viittauksensa Exceliin. Tämä viittaus voi aiheuttaa ongelmia, kun yrität suorittaa automaatiokoodia useita kertoja. Huomaa, että vaikka koodirivi alkaa objektimuuttujalla, kutsu voidaan tehdä Excel-objektille, -menetelmälle tai -ominaisuudelle keskellä koodiriviä, jota ei edeltää objektimuuttuja.Seuraavissa vaiheissa kuvataan, miten tämä ongelma toistetaan ja miten ongelma korjataan.
Toimintatavan toistamisen vaiheet
-
Aloita uusi Standard EXE -projekti Visual Basicissa. Lomake1 luodaan oletusarvoisesti.
-
Valitse Projekti-valikossaViittaukset ja tarkista sitten objektikirjastosta excel-versio, jonka haluat automatisoida.
-
Aseta Komentopainike-ohjausobjekti Form1:een.
-
Kopioi seuraava koodiesimerkki Lomakkeen1 koodi-ikkunaan.
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 -
Käynnistä ohjelma valitsemalla Suorita-valikossaKäynnistä tai painamalla F5-näppäintä.
-
Napsauta Komentopainike-ohjausobjektia . Virhettä ei tapahdu. Viittaus Exceliin on kuitenkin luotu, eikä sitä ole julkaistu.
-
Napsauta Komentopainike-ohjausobjektia uudelleen. Huomaa, että saat virhesanoman, jota käsitellään Oireet-osassa.Huomautus Virhesanoma ilmenee, koska koodi viittaa solun menetelmään ilman, että soittoa edeltää xlSheet-objektimuuttuja.
-
Pysäytä projekti ja muuta seuraavaa koodiriviä:
xlSheet.Range(Cells(1,1),Cells(10,2)).Value = "Hello"
Muuta koodirivi muistuttamaan seuraavaa koodiriviä.
xlSheet.Range(xlSheet.Cells(1,1),xlSheet.Cells(10,2)).Value = "Hello"
-
Suorita ohjelma uudelleen. Huomaa, että voit suorittaa koodin useita kertoja saamatta virhesanomaa.
Lisätietoja
189618 Näyttöön voi tulla "Run-time error '-2147023174' (800706ba)" -virhesanoma tai "Run-time error '462",kun suoritat Visual Basic -koodin, joka käyttää automaatiota Word