Kuidas parandada käitamisaja viga 1004 Excelis

Käivitusviga 1004 on Microsoft Visual Basicuga seotud veakood, mis teadaolevalt mõjutab Microsoft Exceli kasutajaid. Viga on teadaolevalt kõige levinum programmides Excel 2003 ja Excel 2007, ehkki ükski Microsofti arvutitele mõeldud populaarse töölehe rakenduse versioon ei ole ähvarduse eest, milleks on Run-time error 1004. Enamasti näevad selle probleemiga seotud kasutajad ühte järgmistest: käitusaja vea 1004 kaks erinevat varianti. Tervikuna olid käitusaja vea 1004 kaks varianti järgmised:

Käitusaja viga“ 1004 ”:

Töölehe klassi kopeerimise meetod ebaõnnestus ”

Käitusaja viga“ 1004 ”:

Rakenduse määratletud või objekti määratletud viga ”

Täpne kuvatud veateade võib mõnel juhul ka pisut erineda, ehkki veakood jääb samaks. Sõltumata sellest, millist väljaande versiooni kogete, ilmneb see peaaegu alati Exceli makro käitamisel, mis on mõeldud töölehtede kopeerimiseks ja koopiate paigutamiseks samasse töövihikusse kui algne tööleht.

Erinevalt kõige halvematest tehnoloogiaprobleemidest on Microsoft Excelis käitusaja vea 1004 põhjus teada. Käivitusviga 1004 ilmneb siis, kui töötav makro kopeerib algse töölehe määratletud nimega töövihikusse, mida te enne makro käitamist ei salvestanud ega sulgenud. Sellise makro näide on järgmine kood:

 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 

Kuna käitusaja vea 1004 põhjus Microsoft Exceli kontekstis on teada, nagu ka eraldusvõime. Lisaks selle probleemi lahendusele on lahendus kättesaadav ka kasutajatele, keda see puudutab, mida saab kasutada juhul, kui lahendus ei tööta või nad ei leia, et lahendus oleks elujõuline võimalus.

Lahendus:

Selle konkreetse probleemi lahendus on lihtsalt teie töötava makro koodi redigeerimine, et lasta see perioodiliselt salvestada ja sulgeda töövihik, samal ajal kui see töölehtedest koopiaid teeb. Makro kood, mis seda teeb, näeks välja järgmine:

 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 

Märkus . Töölehe kopeerimise täpne arv enne töövihiku salvestamist ja sulgemist, koopiad salvestatakse, varieerub üksikjuhtudel, kuna see sõltub töölehe suurusest, millest kopeerite.

Lahendus:

Nagu varem öeldud, eksisteerib ka selle konkreetse probleemi lahendamine. Selle probleemi lahendamine on lihtne, kui sisestate mallilt uus tööleht olemasoleva töölehe koopia loomise asemel. Kui soovite selle probleemi lahendada, tehke järgmist.

  1. Käivitage Excel .
  2. Looge uus töövihik ja kustutage kõik töölehed, kuhu see on salvestatud.

  3. Vormindage töövihik.
  4. Lisage vaikimisi mallil olev tekst, andmed ja / või diagrammid ainsale töölehele, mida töövihik nüüd sisaldab.
  5. Kui kasutate Excel 2003 või varasemat, klõpsake File > Save As . Teisest küljest, kui kasutate rakendust Excel 2007 või uuemat, klõpsake nuppu Microsoft Office ja seejärel nuppu Salvesta nimega .

  6. Tippige väljale Faili nimi : kõik, mida soovite malli kutsuda.
  7. Avage välja Salvesta tüübina: kõrval olev rippmenüü ja klõpsake Exceli malli (.xlt), kui kasutate Excel 2003 või varasemat, või Excel Template (.xltx), kui kasutate selle valimiseks Excel 2007 või uuemat.

  8. Klõpsake nuppu Salvesta .

  9. Kui olete malli edukalt loonud, saate selle programmiliselt sisestada, kasutades järgmist koodirida:

    Sheets.Add Type: = tee \ failinimi

Märkus . Ülalkirjeldatud koodireas tuleb tee \ failinimi asendada äsja loodud lehemalli asukoha täieliku rajaga (koos täieliku failinimega).

Huvitavad Artiklid