Kako popraviti grešku vremena pokretanja 1004 u Excelu

Pogreška pri pokretanju 1004 je kôd pogreške koji se odnosi na Microsoft Visual Basic za koji se znalo da utječe na korisnike Microsoft Excel-a. Poznato je da je greška najraširenija u programima Excel 2003 i Excel 2007, iako nijedna inačica Microsoftove popularne aplikacije za radni list za računala nije sigurna od prijetnje koja je pogreška Run-time 1004. U većini slučajeva korisnici pogođeni ovim problemom vide jednog od dvije različite varijacije greške vremena izvođenja 1004. Dvije varijacije greške pokretanja 1004 čitaju u cijelosti:

" Pogreška u vremenu pokretanja" 1004 ":

Način kopiranja razreda radnog lista nije uspio "

" Pogreška u vremenu pokretanja" 1004 ":

Pogreška definirana aplikacijom ili objektom "

Točna poruka o pogrešci koju vidite može se također neznatno razlikovati u nekoliko slučajeva, mada će kôd pogreške ostati isti. Bez obzira s kojom se verzijom problema susrećete, ona se gotovo uvijek događa dok pokrećete makronaredbu u Excelu koja je dizajnirana za kopiranje radnih listova, a zatim kopije smjestiti u istu radnu knjigu kao i izvorni radni list.

Za razliku od najgorih tehničkih problema tamo, poznat je uzrok pogreške u radu 1004 u programu Microsoft Excel. Pogreška 1004 vremena pokretanja pojavljuje se kada makronaredba koju pokrećete kopira originalni radni list u radnu knjigu s definiranim imenom koje niste spremili i zatvorite prije pokretanja makronaredbe. Primjer takve makronaredbe može se vidjeti u sljedećem kodu:

 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 

Budući da je uzrok greške pokretanja 1004 u kontekstu Microsoft Excel poznat, kao i rezolucija. Pored rješenja ovog pitanja, ono što je dostupno i korisnicima na koje utječe je rješenje koje se može upotrijebiti u slučaju da rješenje ne funkcionira ili ako rješenje ne nađe kao održivu opciju.

Rješenje:

Rješenje ovog specifičnog problema je jednostavno uređivanje koda makronaredbe koju pokrećete kako biste ga povremeno spremali i zatvarali ciljnu radnu knjižicu dok izrađuje kopije radnog lista. Kod za makronaredbu koja to radi izgledao bi nešto prema sljedećem:

 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 

Napomena: Točan broj kopija kopiranja radnog lista prije nego što trebate spremiti i zatvoriti radnu knjižicu, kopije se spremaju u zavisnosti od slučaja do slučaja, jer to ovisi o veličini radnog lista iz kojeg izrađujete kopije.

Rešavanje:

Kao što je prethodno rečeno, postoji i rješenje ovog specifičnog problema. Rešavati ovaj problem jednostavna je stvar umetanja novog radnog lista iz predloška umjesto stvaranja kopije postojećeg radnog lista. Ako želite riješiti problem, evo što trebate učiniti:

  1. Pokrenite Excel .
  2. Napravite novu radnu knjižicu i izbrišite svaki pojedinačni radni list koji sadrži spremanje za jedan.

  3. Formatirajte radnu knjigu.
  4. Dodajte bilo koji tekst, podatke i / ili grafikone koje u predlošku želite imati prema zadanom jedinom radnom listu u kojem se sada nalazi radna knjiga.
  5. Ako koristite Excel 2003 ili starije, kliknite na Datoteka > Spremi kao . Ako koristite Excel 2007 ili noviju verziju, s druge strane, kliknite gumb Microsoft Office i zatim kliknite Spremi kao .

  6. U polje Naziv datoteke : upišite sve što želite da se predložak poziva.
  7. Otvorite padajući izbornik pored polja Spremi kao vrstu: i kliknite Excel predložak (.xlt) ako koristite Excel 2003 ili starije, ili Excel predložak (.xltx) ako koristite Excel 2007 ili noviji da biste ga odabrali.

  8. Kliknite Spremi .

  9. Nakon što uspješno stvorite predložak, programski ga možete umetnuti pomoću sljedećeg retka koda:

    Sheets.Add Type: = staza \ naziv datoteke

Napomena: U gore opisanom kôdu, put \ naziv datoteke treba zamijeniti potpunim putem (uključujući cjelokupni naziv datoteke) za mjesto predloška lista koji ste upravo stvorili.

Zanimljivi Članci