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

  1. Aloita uusi Standard EXE -projekti Visual Basicissa. Lomake1 luodaan oletusarvoisesti.

  2. Valitse Projekti-valikossaViittaukset ja tarkista sitten objektikirjastosta excel-versio, jonka haluat automatisoida.

  3. Aseta Komentopainike-ohjausobjekti Form1:een.

  4. 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
    
  5. Käynnistä ohjelma valitsemalla Suorita-valikossaKäynnistä tai painamalla F5-näppäintä.

  6. Napsauta Komentopainike-ohjausobjektia . Virhettä ei tapahdu. Viittaus Exceliin on kuitenkin luotu, eikä sitä ole julkaistu.

  7. 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.

  8. 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"
    
  9. 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  

Tarvitsetko lisäohjeita?

Haluatko lisää vaihtoehtoja?

Tutustu tilausetuihin, selaa harjoituskursseja, opi suojaamaan laitteesi ja paljon muuta.