Kaip ištaisyti 1004 vykdymo laiko klaidą

Vykdymo laiko klaida 1004 yra klaidos kodas, susijęs su „Microsoft Visual Basic“, kuris, kaip žinoma, turi įtakos „Microsoft Excel“ vartotojams. Žinoma, kad klaida labiausiai paplitusi „Excel 2003“ ir „Excel 2007“, nors nė viena „Microsoft“ populiarios kompiuterių darbalapio programos versija nėra apsaugota nuo grėsmės, kuri yra „Run-time error 1004“. Daugeliu atvejų vartotojai, kuriems daro įtaką ši problema, mato vieną iš du skirtingi vykdymo laiko klaidos 1004 variantai. Visi šie du veikimo laiko klaidos 1004 variantai:

Vykdymo laiko klaida„ 1004 “:

Nepavyko kopijuoti darbalapio klasės metodo “

Vykdymo laiko klaida„ 1004 “:

Programos apibrėžta arba objekto apibrėžta klaida “

Kai kuriais atvejais tikslus klaidos pranešimas taip pat gali šiek tiek skirtis, nors klaidos kodas išliks tas pats. Nepriklausomai nuo to, kokią problemos versiją patiriate, vis dėlto ji beveik visada atsiranda paleidus „Excel“ makrokomandą, skirtą nukopijuoti darbalapius, o tada įdėkite kopijas į tą pačią darbo knygą kaip ir originalų darbalapį.

Skirtingai nuo blogiausių technologijų problemų, „Microsoft Excel“ yra žinoma 1004 vykdymo laiko klaidos priežastis. Vykdymo laiko klaida 1004 įvyksta, kai jūsų vykdoma makrokomanda nukopijuoja originalų darbalapį į darbaknygę su apibrėžtu pavadinimu, kurio neišsaugojote ir neuždarėte prieš paleisdami makrokomandą. Tokios makrokomandos pavyzdį galima pamatyti šiame kodekse:

 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 

Kadangi „Microsoft Excel“ kontekste žinoma 1004 vykdymo laiko klaidos priežastis, kaip ir rezoliucija. Be šio klausimo sprendimo, tai taip pat yra prieinama vartotojams, kuriems tai daro įtaką, tai yra sprendimas, kuris gali būti naudojamas tuo atveju, jei sprendimas neveikia arba jie neranda sprendimo, kuris būtų tinkamas pasirinkimas.

Sprendimas:

Šios konkrečios problemos sprendimas yra tiesiog redaguoti naudojamo makrokodo kodą, kad jį periodiškai išsaugotumėte ir uždarytumėte tikslinę darbaknygę darydami darbalapio (-ių) kopijas. Makro, kuris tai daro, kodas atrodytų taip:

 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 

Pastaba: tikslus, kiek kartų galite nukopijuoti darbalapį, prieš išsaugodami ir uždarę darbaknygę, kopijų, kurias išsaugote, skaičius skiriasi kiekvienu atveju, nes tai priklauso nuo darbalapio, kuriame kopijuojate, dydžio.

Problemos sprendimas:

Kaip minėta anksčiau, taip pat yra šios problemos sprendimo būdas. Išvengti šią problemą yra paprasta - įdėkite naują darbalapį iš šablono, o ne sukurkite esamo darbalapio kopiją. Jei norėtumėte išspręsti šią problemą, tai turite padaryti:

  1. Paleiskite „ Excel“ .
  2. Sukurkite naują darbaknygę ir ištrinkite kiekvieną darbalapį, kuriame yra tik viena.

  3. Formatuokite darbaknygę.
  4. Įtraukite bet kokį tekstą, duomenis ir (arba) diagramas, kurias pagal numatytuosius nustatymus norite į šabloną, į vienintelį darbalapį, kuriame dabar yra darbaknygė.
  5. Jei naudojate „Excel 2003“ ar ankstesnę versiją, spustelėkite Failas > Įrašyti kaip . Kita vertus, jei naudojate „Excel 2007“ ar naujesnę versiją, spustelėkite mygtuką „ Microsoft Office “, tada spustelėkite Įrašyti kaip .

  6. Laukelyje Failo vardas : įveskite, ką norite, kad šablonas būtų vadinamas.
  7. Atidarykite išskleidžiamąjį meniu šalia laukelio Įrašyti kaip tipą: ir spustelėkite „ Excel“ šabloną (.xlt), jei naudojate „Excel 2003“ ar ankstesnę versiją, arba „ Excel“ šabloną (.xltx), jei naudojate „Excel 2007“ ar naujesnę versiją, kad jį pasirinktumėte.

  8. Spustelėkite Išsaugoti .

  9. Sėkmingai sukūrę šabloną, galite jį įterpti programiškai naudodami šią kodo eilutę:

    Sheets.Add Type: = kelias \ failo vardas

Pastaba: aukščiau aprašytoje kodo eilutėje kelias \ failo vardas turi būti pakeistas visu keliu (įskaitant visą failo pavadinimą), kurį sukūrėte ką tik sukurto lapo šablone.

Įdomios Straipsniai