Cum să remediați eroarea de timp de executare 1004 în Excel

Eroarea de execuție 1004 este un cod de eroare aparținând Microsoft Visual Basic despre care se știe că afectează utilizatorii Microsoft Excel. Se știe că eroarea este cea mai răspândită la Excel 2003 și Excel 2007, deși nicio versiune a aplicației populare a foii de lucru Microsoft pentru computere nu este în siguranță de amenințarea care este eroarea în timp de executare 1004. În cele mai multe cazuri, utilizatorii afectați de această problemă văd una dintre două variante diferite ale erorii de executare 1004. În totalitatea lor, cele două variații ale erorii de executare 1004 au citit:

Eroare timp de execuție '1004':

Metoda de copiere a clasei de foi de lucru a eșuat ”

Eroare timp de execuție '1004':

Eroare definită de aplicație sau definită de obiect ”

Mesajul exact de eroare pe care îl vedeți poate varia ușor, în câteva cazuri, deși codul de eroare va rămâne același. Indiferent de versiunea problemei pe care o întâmpinați, cu toate acestea, ea apare aproape întotdeauna în timpul rulării unei macro-uri în Excel, care este proiectată pentru a copia foile de lucru și apoi a plasa copiile în aceeași carte de lucru ca fișa de lucru originală.

Spre deosebire de cele mai grave probleme tehnologice existente, cauza erorii de executare 1004 din Microsoft Excel este cunoscută. Eroarea de timp de execuție 1004 apare atunci când macro-ul pe care îl executați copiază fișa de lucru originală într-o carte de lucru cu un nume definit pe care nu l-ați salvat și nu l-ați închis înainte de a rula macro-ul. Un exemplu de astfel de macro poate fi văzut în următorul cod:

 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 

Deoarece cauza erorii de executare 1004 în contextul Microsoft Excel este cunoscută, la fel și rezoluția. În plus față de o soluție la această problemă, ceea ce este de asemenea disponibil pentru utilizatorii afectați este o soluție care poate fi folosită în cazul în care soluția nu funcționează sau nu găsesc soluția ca o opțiune viabilă.

Soluția:

Soluția la această problemă specifică este să editați pur și simplu codul macro-ului pe care îl executați pentru a-l salva periodic și a închide cartea de lucru țintă în timp ce face copii ale foii de lucru. Codul pentru o macrocomenzi care face acest lucru ar arăta ceva după cum urmează:

 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 

Notă: Numărul exact de ocazii în care puteți copia o foaie de lucru înainte de a fi necesar să salvați și să închideți cartea de lucru, copiile salvate variază de la un caz la altul, deoarece depinde de dimensiunea foii de lucru pe care o faceți.

Soluția:

Așa cum am spus anterior, există și o soluție la această problemă specifică. Problema simplă este să inserați o foaie de lucru nouă dintr-un șablon în loc să creați o copie a unei foi de lucru existente. Dacă doriți să rezolvați această problemă, iată ce trebuie să faceți:

  1. Lansați Excel .
  2. Creați un nou registru de lucru și ștergeți fiecare foaie de lucru care conține salvarea pentru una.

  3. Formatează cartea de lucru.
  4. Adăugați orice text, date și / sau diagrame pe care doriți să le aveți în șablon în mod implicit la singura foaie de lucru pe care o conține acum.
  5. Dacă utilizați Excel 2003 sau o versiune anterioară, faceți clic pe File > Save As . Dacă utilizați Excel 2007 sau o versiune ulterioară, pe de altă parte, faceți clic pe butonul Microsoft Office și apoi faceți clic pe Salvați ca.

  6. În câmpul Nume fișier : introduceți orice doriți să fie chemat șablonul.
  7. Deschideți meniul derulant de lângă câmpul Salvați ca tip: și faceți clic pe șablonul Excel (.xlt) dacă utilizați Excel 2003 sau versiunea anterioară, sau șablonul Excel (.xltx) dacă utilizați Excel 2007 sau ulterior pentru a-l selecta.

  8. Faceți clic pe Salvați .

  9. După ce ați creat cu succes șablonul, îl puteți insera programatic folosind următoarea linie de cod:

    Sheets.Add Type: = calea \ nume de fișier

Notă: În linia de cod descrisă mai sus, calea \ nume de fișier trebuie înlocuită cu calea completă (inclusiv numele complet al fișierului) pentru locația șablonului pe care tocmai l-ați creat.

Articole Interesante