Kuinka korjata ajoaikavirhe 1004 Excelissä

Ajonaikainen virhe 1004 on Microsoft Visual Basiciin liittyvä virhekoodi, jonka tiedetään vaikuttavan Microsoft Excel -käyttäjiin. Virheen tiedetään olevan yleisin Excel 2003: ssa ja Excel 2007: ssä, vaikka mikään Microsoftin suositun tietokoneiden taulukkolaskentaohjelman versio ei ole turvassa uhilta, joka on Run-time error 1004. Useimmissa tapauksissa käyttäjät, joihin tämä ongelma vaikuttaa, näkevät yhden seuraavista: kaksi erilaista variaatiota ajoaikavirheestä 1004. Kaikkia ajoajan virheen 1004 muunnelmia luettiin:

Ajonaikainen virhe” 1004 ”:

Laskentataulukon luokan kopiointimenetelmä epäonnistui ”

Ajonaikainen virhe” 1004 ”:

Sovelluksen tai kohteen määrittelemä virhe ”

Tarkka näkemäsi virhesanoma voi myös vaihdella hieman, joissain tapauksissa, vaikka virhekoodi pysyy samana. Riippumatta siitä, kummasta versiosta ongelmasi ilmenee, se tapahtuu melkein aina ajaessasi makroa Excelissä, joka on tarkoitettu kopioimaan laskentataulukoita ja sijoittamaan kopiot samaan työkirjaan kuin alkuperäinen laskentataulukko.

Toisin kuin pahimmissa tekniikan ongelmissa, Microsoft Excel -sovelluksen ajonaikaisen virheen 1004 syy tunnetaan. Ajonaikainen virhe 1004 tapahtuu, kun käyttämäsi makro kopioi alkuperäistä laskentataulukkoa työkirjaan, jolla on määritetty nimi, jota et ole tallentanut ja sulkenut ennen makron suorittamista. Esimerkki sellaisesta makrosta on seuraavassa koodissa:

 Sub CopySheetTest() Dim iTemp As Integer Dim oBook As Workbook Dim iCounter As Integer ' Create a new blank workbook: iTemp = Application.SheetsInNewWorkbook Application.SheetsInNewWorkbook = 1 Set oBook = Application.Workbooks.Add Application.SheetsInNewWorkbook = iTemp ' Add a defined name to the workbook ' that RefersTo a range: oBook.Names.Add Name:="tempRange", _ RefersTo:="=Sheet1!$A$1" ' Save the workbook: oBook.SaveAs "c:\test2.xls" ' Copy the sheet in a loop. Eventually, ' you get error 1004: Copy Method of ' Worksheet class failed. For iCounter = 1 To 275 oBook.Worksheets(1).Copy After:=oBook.Worksheets(1) Next End Sub 

Koska ajonaikaisen virheen 1004 syy Microsoftin yhteydessä tunnetaan, kuten myös tarkkuus. Tämän ongelman ratkaisun lisäksi käytettävissä on myös kiertotapa, jota käyttäjille, joihin asia vaikuttaa, on kiertotapa, jota voidaan käyttää, jos ratkaisu ei toimi tai he eivät löydä ratkaisua toteuttamiskelpoisena vaihtoehtona.

Ratkaisu:

Ratkaisu tähän erityiseen ongelmaan on yksinkertaisesti muokata käyttämäsi makron koodia, jotta se ajoittain tallennetaan ja suljetaan tavoitetyökirja, kun se kopioi laskentataulukoita. Makron koodi, joka tekee tämän, näyttää seuraavan suuntaan:

 Sub CopySheetTest() Dim iTemp As Integer Dim oBook As Workbook Dim iCounter As Integer ' Create a new blank workbook: iTemp = Application.SheetsInNewWorkbook Application.SheetsInNewWorkbook = 1 Set oBook = Application.Workbooks.Add Application.SheetsInNewWorkbook = iTemp ' Add a defined name to the workbook ' that RefersTo a range: oBook.Names.Add Name:="tempRange", _ RefersTo:="=Sheet1!$A$1" ' Save the workbook: oBook.SaveAs "c:\test2.xls" ' Copy the sheet in a loop. Eventually, ' you get error 1004: Copy Method of ' Worksheet class failed. For iCounter = 1 To 275 oBook.Worksheets(1).Copy After:=oBook.Worksheets(1) 'Uncomment this code for the workaround: 'Save, close, and reopen after every 100 iterations: If iCounter Mod 100 = 0 Then oBook.Close SaveChanges:=True Set oBook = Nothing Set oBook = Application.Workbooks.Open("c:\test2.xls") End If Next End Sub 

Huomautus: Tarkka määrä, kuinka monta taulukkoa voi kopioida ennen työkirjan tallentamista ja sulkemista, kopioita tallennetaan, tapauskohtaisesti, koska se riippuu kopioitavan taulukon koosta.

Kiertotapa:

Kuten aiemmin todettiin, myös tähän erityiseen ongelmaan voidaan löytää kiertotapa. Tämän ongelman kiertäminen on yksinkertainen tapa lisätä uusi laskentataulukko mallista sen sijaan, että luodaan kopio olemassa olevasta laskentataulukosta. Jos haluat kiertää tämän ongelman, sinun on tehtävä seuraava:

  1. Käynnistä Excel .
  2. Luo uusi työkirja ja poista jokainen työkirja, joka sisältää yhden työkirjan.

  3. Alusta työkirja.
  4. Lisää kaikki tekstit, tiedot ja / tai kaaviot, jotka haluat olla mallissa oletuksena, ainoaan taulukkoon, jonka työkirja nyt sisältää.
  5. Jos käytät Excel 2003: ta tai sitä aiempaa, napsauta Tiedosto > Tallenna nimellä . Jos käytät toisaalta Excel 2007 tai uudempi, napsauta Microsoft Office -painiketta ja napsauta sitten Tallenna nimellä .

  6. Kirjoita Tiedostonimi : -kenttään mitä haluat mallin kutsuttavan.
  7. Avaa Tallenna tyypiksi -kentän vieressä oleva avattava valikko ja napsauta Excel Template (.xlt), jos käytät Excel 2003: ta tai aiempaa, tai Excel Template (.xltx), jos valitset sen Excel 2007 tai uudempi.

  8. Napsauta Tallenna .

  9. Kun olet luonut mallin, voit lisätä sen ohjelmallisesti käyttämällä seuraavaa koodiriviä:

    Sheets.Add Type: = polku \ tiedostonimi

Huomaa: Edellä kuvatussa koodirivissä polku \ tiedostonimi on korvattava äskettäin luodun taulukon mallipohjan täydellä polulla (mukaan lukien koko tiedostonimi).

Mielenkiintoisia Artikkeleita